Services

Résumé

Ceci n'est encore qu'un brouillon.
Ce document décrit les services de Fungus.

1. Rôle des services

Les services font partis de l'infrastructure de Fungus. L'infrastructure leurs délègue la plupart de son travail. Les services permettent de modulariser le simulateur. Ils sont chargés à la demande lors de l'execution. De plus, ils sont interchangeable à volonté d'une simulation à l'autre.

2. Implementation

2.1. Services abstraits


[]
Figure 1: Diagramme static d'un service test.
Il faut définir une interface pour le type du service. Cette interface hérite de l'interface Service. Tout les services de ce type devront implémenter cette interface. Un usage veut que les interfaces des services soit dans le package fungus.core.service.

L'implémentation hérite de AbstractService et implémente l'interface du service. Les implémentations être peuvent n'importe où.

Par exemple sur la figure 1, le service test est défini par l'interface TestService. Cette interface définit toutes les opérations réalisables par le service. L'implementation Test réalise ces opérations. Les opérations d'initialisation du service sont éffectuées par la classe AbstractService.

Les services sont crées par la `factory' mais géré par l'infrastructure.

2.2. Déclaration

Le fichier de propriété /fungus/fungus.prop contient les déclarations des implémentations des différents services. Un ligne de ce fichier ressemble à:
service.ressource = classe-implementant-le-service
La ressource est generalement déclarer dans l'interface du service:
public static String ressource = "ressource";

La déclaration du service test:

service.test = fungus.core.service.Test

2.3. Utilisation d'un service

[] L'infrastructure possède un ServiceFactory. Pour lancer un service, on appelle startService de l'infrastructure. Le service est conservé dans l'infrastructure.
Lancement, brutal d'un service:

    try {
      is = (InfoService)infra.service(InfoService.ressource);
    } catch (ServiceException e) {
      try {
        infra.startService(InfoService.ressource);
        is = (InfoService)infra.service(InfoService.ressource);
      } catch (ServiceException e1) {
        e1.printStackTrace();
      }
    }
     

La liste des services est contenu dans le fichier de propriété /fungus/fungus.prop.

Pour acceder à une methode, on fait un (interface)infra.service("nom").methode

3. Listes des services connus

3.1. Créateur d'agents

nom du service: createAgent

3.2. Serveur Reseau

3.3. Information

nom du service: info

3.4. Visualisation

4. Ajout d'un message sur le service reseau.

  1. créer le type du message. Le type est de type String.
  2. Créer une classe implémentant fungus.core.infrastructure.NetMessageListener. Cette classe traitera le message.
  3. Enregistrer la classe NetMessageListener dans NetMessageSelector
Latest News
Warning: main(http://sourceforge.net/export/projnews.php?group_id=57560&limit=5&flat=1&show_summaries=0) [function.main]: failed to open stream: Network is unreachable in /mnt/102/sda/3/5/valvassori/unix/fungus/service.php3 on line 139

Warning: main() [function.include]: Failed opening 'http://sourceforge.net/export/projnews.php?group_id=57560&limit=5&flat=1&show_summaries=0' for inclusion (include_path='/mnt/102/sda/3/5/valvassori/include:.:/usr/php4/lib/php') in /mnt/102/sda/3/5/valvassori/unix/fungus/service.php3 on line 139


Warning: main(http://sourceforge.net/export/projhtml.php?group_id=57560&mode=full&no_table=1) [function.main]: failed to open stream: Network is unreachable in /mnt/102/sda/3/5/valvassori/unix/fungus/service.php3 on line 141

Warning: main() [function.include]: Failed opening 'http://sourceforge.net/export/projhtml.php?group_id=57560&mode=full&no_table=1' for inclusion (include_path='/mnt/102/sda/3/5/valvassori/include:.:/usr/php4/lib/php') in /mnt/102/sda/3/5/valvassori/unix/fungus/service.php3 on line 141