Facette Identity de l'agent.

Ce package contient les interfaces qui définissent les opérations de manipulation de la facette Identity des agents.

L'identité d'un agent est exprimée par un ensemble d'alias (noms alternatifs), auquel s'ajoute un identifiant inaliénable : l'id local de l'agent. Ce dernier est la chaine identifiante attribuée à l'agent au moment de son enregistrement dans le space (voir {@link Ubiquity.LocalSpot#addAgent(String, Agent , boolean ) }).
A tout moment, l'agent peut déclarer qu'il peut être désigné par un nouvel alias. Il peut également à tout moment annuler cette déclaration en indiquant qu'il ne doit plus être désigné par l'alias en question. Pour permettre la gestion des agents redondants (plusieurs agents déclarés sur un même alias), une valeur de priorité est associée à l'alias au moment de sa déclaration : {@link Ubiquity.agent.identity.WIdentity#setAlias(String, short)}. Cette valeur sera en particulier utilisée pour le routage des messages pour lesquels le destinataire est désigné par un alias (voir la section d'envoi de de message de l'interface {@link Ubiquity.agent.AHandle}).

Cette facette identité est "exposée", cela signifie que la consultation de cette facette est possible pour n'importe quel agent du space.
Pour cela, tout agent peut obtenir le descripteur en lecture ({@link Ubiquity.agent.identity.RIdentity}) des identités d'un autre agent de diverses façons. Par exemple via le monitor et sa méthode {@link Ubiquity.Monitor#getAgent(String)}, ou encore en argument de la méthode utilisée pour livrer un message à l'agent : {@link Ubiquity.agent.Agent#receive(AHandle , RIdentity , String , Value )} et dans laquelle l'expéditeur est spécifié au travers de son descripteur d'identité.

Par contre, les opérations en écriture ne sont possibles que pour l'agent qui porte cette facette (ou le code ayant enregistré cet agent sur le spot local).
En effet, le descripteur en écriture ({@link Ubiquity.agent.identity.WIdentity}) ne peut s'obtenir que sur l'handle de l'agent via la méthode {@link Ubiquity.agent.AHandle#myIdentity()}.
NB : seul l'agent lui-même, et le code ayant procédé à son enregistrement, possède une référence sur cet handle.

Pour un composant agent conçu en héritant de la classe {@link Ubiquity.util.component.BaseAgentComponent}, ce descripteur en écriture est aussi disponible sous l'attribut this.identity.