next up previous contents
suivant: À propos de ce monter: JavAct v0.5.0 précédent: Un exemple de comportement   Table des matières

Sous-sections

Primitives pour la programmation de comportements

Cette section présente brièvement les primitives offertes par la bibliothèque JAVACT pour la programmation de comportements d'acteurs. Toutes ces méthodes sont accessibles par héritage (de la classe QuasiBehavior) et sont déclarées final, il n'est donc pas possible de les redéfinir. Pour plus de détails (notemment sur les types) vous pouvez vous référer à la documentation javadoc du code de la bibliothèque.

Création d'un acteur

Ces primitives permettent de créer un acteur dont on récupère la référence, ou null si la création à échoué. Dans ce cas, une Runtime exception CreateException est levée.


Actor create(QuasiBehavior b)
Création d'acteur sur la place locale à partir du comportement b.


Actor create(String p, QuasiBehavior b)
Même chose, mais création sur une place p.


Actor create( String p, QuasiBehavior b, MailBoxCtI box, BecomeCtI bec, CreateCtI
crt, LifeCycleCtI lif, MoveCtI mve, SendCtI snd)

Même chose, mais en donnant l'ensemble des micro-composants qui régissent le fonctionnement de l'acteur.

Envoi de message

Ces primitives permettent d'envoyer un message à un acteur. Si l'émission échoue, une Runtime exception SendException est levée.


void send(Message m, Actor a)
Envoie le message m à l'acteur de référence a de manière asynchrone.


void send(MessageWithReply m, Actor a)
Envoie le message m à l'acteur de référence a. On peut ensuite attendre le résultat avec m.getReply(). En cas d'erreur (ré-émission du même message par exemple), une Runtime exception JSMSendException est levée. En cas de problème côté récepteur, une Runtime exception JavActException est levée (côté récepteur inaccessible à l'émetteur).

Changement de comportement

Ces primitives permettent de changer le comportement d'un acteur après la fin du traitement du message courant.


void becomeAny(QuasiBehavior b)
Depuis la version 0.5.0 de JAVACT, les primitives typées de changement de comportement
become(XXXQuasiBehavior b) sont générées automatiquement d'après la spécification des comportements d'acteurs (cf. §4.1.2). Néanmoins, il reste possible mais déconseillé de faire des changements de comportements non typés (et donc potentiellement moins sûrs) avec cette primitive.


void suicide()
Permet de terminer l'exécution de l'acteur, qui ne répondra plus à aucun message et ne traitera pas les éventuels messages en attente.

Déplacement de l'acteur

Ces primitives permettent de déplacer un acteur vers une place accessible du réseau. Pour des raisons de cohérence, la mobilité n'est effectuée que lors du changement de comportement (soit à la fin du traitement du message courant). L'appel de ces primitives retourne sans erreur liée à la mobilité et le code qui suit leur exécution est toujours exécuté. Par contre, si une erreur se produit durant le déplacement (place inaccessible, problème de réseau...) une Runtime exception GoException est levée.


void go(String p)
Déplacement de l'acteur sur une place p, sans gérer les erreurs.


void go(String p, HookInterface h)
Déplacement de l'acteur sur une place p. Si une GoException est levée, la bibliothèque redonne la main à la méthode resume(GoException e) de l'objet h. Cet objet peut être l'instance d'une classe interne du comportement, afin de pouvoir acceder à toutes les information nécessaires au recouvrement de l'erreur.

Localisation et auto-référence de l'acteur

String myPlace()
Retourne l'adresse de la place sur laquelle l'acteur s'exécute, sous la forme d'une chaîne de caractères (nom:port).


Actor ego()
Retourne l'auto-référence de l'acteur.

Adaptation des micro-composants

JAVACT permet l'adaptation dynamique par remplacement de ses micro-composants. Cette adaptation n'est effective lors du changement de comportement.


void with(MailBoxCtI box)
Remplacement du composant boîte aux lettres.


void with(BecomeCtI bec)
Remplacement du composant de changement de comportement.


void with(CreateCtI crt)
Remplacement du composant de création d'acteur.


void with(MoveCtI mve)
Remplacement du composant de mobilité.


void with(SendCtI snd)
Remplacement du composant d'envoi de messages.


void with(LifeCycleCtI lif)
Remplacementdu composant de gestion du cycle de vie.


next up previous contents
suivant: À propos de ce monter: JavAct v0.5.0 précédent: Un exemple de comportement   Table des matières
javact@irit.fr