Didier Parigot

Zenith INRIA Team

INRIA Sophia Antipolis
Batiment Fermat, F109
2004 Route des Lucioles
BP 93
06902 Sophia Antipolis
Cedex France

Didier.Parigot@inria.fr
Tel : (33-4) 4 92 38 50 01
Fax : (33-4) 4 92 38 76 44



Modèle de connexion

Le modèle de connexion change pour distinguer un envoi multicast (à tous les composants connectés à un service de sortie) d'un envoi unicast (à un composant destinataire spécifié dans le message).

Le choix du mode se fait dans le message qui comporte un champ destinataire (adressee) : s'il est non nul, le mode unicast est choisi ; s'il est nul, le mode multicast est choisi.

Dans le cas unicast, on cherche à connecter l'entrée d'un composant spécifique à la sortie de notre composant. Il y a Un seul envoi de message pour un composant spécifique.

Dans le cas multicast, on cherche à connecter les services d'entrées d'un composant aux services de sorties de notre composant. Il y a un seul appel d'envoi de message par Remote DS pour chaque service de sortie, plus les envois de messages pour les composants locaux. Le fait de faire un seul appel est primordial pour optimiser l'envoi de messages sur le réseau.

Unicast

Le modèle de connexion unicast est dans le conteneur lui-même et est géré par connect et disconnect.

On cherche à connecter un composant à un autre composant, grâce à une Map<NomDuComposant?, ContainerProxy?>.

Multicast

Le modèle de connexion multicast est modélisé dans le conteneur, pour les composants locaux, et dans les DS réparti. Le conteneur modélise ces assocations avec une Map<NomDuService?, List<ContainerProxyLocal?>> et List<RemoteDS>.

Remote

Lorsqu'un composant local s'exporte a traver un DS (remote) alors le DS s'ajoute dans la List<RemoteDS> du composant.

Lors d'un envoi multicast, tous les RemoteDS de cette liste se chargeront d'envoyer le message aux composants connectés au service de sortie du composant source. Aux DSs de gérer la façon de connecter ce service.

Local

La méthode connect et disconnect fait la distinction d'un composant réparti et local grâce à "instanceof Container". Dans le cas où le composant est local, il fait un matching des services avec la Map<NomDuService?, List<ContainerProxyLocal?>>.

Ce modèle est celui utilisé dans la version 1.5.3 et avant. Il sera restreint seulement aux composants locaux et au multicast.

En plus de la délégation d'envoi aux RemoteDS, le conteneur envoie le message aux différents composants locaux connectés au service du message.


INRIA main page LIRMM main page