Browse Source

chapters/sandbox_pattern_modules: ajout de détails sur l'utilisation des modules

Alexandre Janniaux 7 years ago
parent
commit
96a96d68f2
1 changed files with 30 additions and 5 deletions
  1. 30 5
      chapters/sandbox_pattern_modules.tex

+ 30 - 5
chapters/sandbox_pattern_modules.tex

@@ -1,9 +1,34 @@
+\section{Motivation}
+
 Une autre méthode de cloisonnement qui n'a pas beaucoup été explorée est de
 cloisonner l'application par module et non par objet de libvlccore.
 
-Cette méthode permet d'arriver plus rapidement à une situation où l'ensemble des
-modules de VLC est cloisonné, mais libvlccore ne profite pas du tout de ce
+Cette méthode permet d'arriver plus rapidement à une situation où l'ensemble
+des modules de VLC est cloisonné, mais libvlccore ne profite pas du tout de ce
 cloisonnement et il nous reste alors environ 100 000 lignes de code à auditer
-pour s'approcher de loin à la méthode précédente. La technique reste
-intéressante à mentionner comme l'injection montre de façon plus simple comment
-le pattern fonctionne.
+pour s'approcher de loin de la méthode précédente. Il est intéressant de
+mentionner cette technique du point de vue de l'architecture, étant donné
+qu'elle montre une autre façon de procéder à l'injection de la sandbox dans les
+modules et peut souligner de nouveaux défauts dans la conception du code.
+
+Comme on l'a vu dans les premières parties, VLC fonctionne à travers libvlccore
+en instanciant des modules, stockés dans des \inltype{vlc_object_t}. Chaque
+module étant créé puis détruit par le core, tout en fournissant une API commune
+au type de module, il peut être tentant de proposer de nouveaux modules avec un
+type similaire à celui demandé, tout en implémentant la passerelle vers un
+autre module à l'intérieur même.
+
+Avec cette technique, le sandboxing est plus facile à intégrer dans
+l'application mais moins efficace.
+
+\section{Implémentation}
+
+La partie «injection» consiste à complètement rediriger \inltype{module_need}
+vers le cœur de la sandbox pour transformer les requêtes de module vers des
+modules proxies. Le nom du module ou de la classe de module peut correspondre à
+une politique et permet ainsi de décider très finement et automatiquement quel
+module doit être redirigé vers un autre processus, nouveau ou déjà existant.
+
+Il n'y a plus de notion de \inltype{vlc_rpc_handler_t} étant donné que l'on
+manipule directement les modules à travers leur API et que les liens se font au
+niveau du core.