La façon la plus simple d’implémenter un agent SKUAD est de procéder par héritage de la classe AgentUAdapter (package skuad.agentu.util). Le code ci-dessous vous donne une vue d’ensemble des méthodes qu’il faut surcharger en fonction des événements sur lesquels vous pouvez réagir. Notez qu’aucune méthode n’est obligatoire, vous pouvez donc vous limiter à n’écrire que celles qui vous sont nécessaires.
import skuad.agentu.*;
import skuad.agentu.util.*;
public class MonAgent extends AgentUAdapter {
//Spécification des slots de l'agent
public final static String physical_specif = ""; //définition des slots physiques
public final static String social_specif = ""; //définition des slots sociaux
//Cycle de vie de l'agent
public void init(AgentUDescriptor aud){
//invoquée à l'instanciation de la classe de l'agent (avant son démarrage via start())
}
public void start(AgentUDescriptor aud, int ctx){
//invoquée au démarrage de l'agent
}
public void stop(AgentUDescriptor aud, int ctx){
//invoquée lors de la mise à l'arret de l'agent
}
public void event(AgentUDescriptor aud, int code, int ctx){
//invoquée suite aux évènement PAUSE / RESUME / ALL_PLUGGED / MISSING_PLUG (valeur de code)
}
//Exécution du comportement de l'agent
public void behavior(AgentUDescriptor aud, Pulse pulse){
//invoquée quand un pulse active le comportement de l'agent
}
public void inoperablePulse(AgentUDescriptor aud, Pulse pulse){
//invoquée quand un pulse active le comportement de l'agent mais que ce dernier n'est pas dans l'état IN_RUN
}
//Devices attachés à l'agent
public void notifyPlugDevice(AgentUDescriptor aud, String slot, Device device){
//invoquée quand un device vient d'être associé à l'un des slots de l'agent
}
public void notifyUnplugDevice(AgentUDescriptor aud, String slot){
//invoquée quand un device vient d'être dissocié de l'un des slots de l'agent
}
public void notifyChangeDevice(AgentUDescriptor aud, String slot, Device device){
//invoquée quand un device prend la place d'un autre sur l'un des slot de l'agent
}
//Ecoute des devices
public void stateDevice(AgentUDescriptor aud, String slot, Device dev, boolean ready, boolean config_changed){
//invoqué dès que se produit un changement d'état sur un device attaché à l'un des slots de l'agent
}
public void sensorReading(AgentUDescriptor aud, String read_label, Value value) {
//invoqué en réponse à une demande de lecture préalablement réalisée sur un ou plusieurs devices
}
public void sensorChange(AgentUDescriptor aud, String slot, int sensor_id, Value value) {
//invoquée dès qu'un capteur observable, d'un des devices attachés à l'agent, subit un changement de valeur
}
//Avatars associés à l'agent
public void notifyPlugAvatar(AgentUDescriptor aud, String name, Avatar avatar, int contexte){
//invoquée quand un avatar est affectée à l'un des slots de l'agent
}
public void beforeUnplugAvatar(AgentUDescriptor aud, String name, Avatar avatar, int contexte){
//invoquée juste avant qu'un avatar soit dissocié de l'un des slots de l'agent
}
public void notifyUnplugAvatar(AgentUDescriptor aud, String name, int contexte){
//invoquée juste après qu'un avatar soit dissocié de l'un des slots de l'agent
}
public void receive(AgentUDescriptor aud, Avatar avatar, MailBox box, Message mess){
//invoquée dès qu'un message arrive dans la boite aux lettres de l'un des avatars associés à l'agent
}
}
import skuad.agentu.util.*;
public class MonAgent extends AgentUAdapter {
//Spécification des slots de l'agent
public final static String physical_specif = ""; //définition des slots physiques
public final static String social_specif = ""; //définition des slots sociaux
//Cycle de vie de l'agent
public void init(AgentUDescriptor aud){
//invoquée à l'instanciation de la classe de l'agent (avant son démarrage via start())
}
public void start(AgentUDescriptor aud, int ctx){
//invoquée au démarrage de l'agent
}
public void stop(AgentUDescriptor aud, int ctx){
//invoquée lors de la mise à l'arret de l'agent
}
public void event(AgentUDescriptor aud, int code, int ctx){
//invoquée suite aux évènement PAUSE / RESUME / ALL_PLUGGED / MISSING_PLUG (valeur de code)
}
//Exécution du comportement de l'agent
public void behavior(AgentUDescriptor aud, Pulse pulse){
//invoquée quand un pulse active le comportement de l'agent
}
public void inoperablePulse(AgentUDescriptor aud, Pulse pulse){
//invoquée quand un pulse active le comportement de l'agent mais que ce dernier n'est pas dans l'état IN_RUN
}
//Devices attachés à l'agent
public void notifyPlugDevice(AgentUDescriptor aud, String slot, Device device){
//invoquée quand un device vient d'être associé à l'un des slots de l'agent
}
public void notifyUnplugDevice(AgentUDescriptor aud, String slot){
//invoquée quand un device vient d'être dissocié de l'un des slots de l'agent
}
public void notifyChangeDevice(AgentUDescriptor aud, String slot, Device device){
//invoquée quand un device prend la place d'un autre sur l'un des slot de l'agent
}
//Ecoute des devices
public void stateDevice(AgentUDescriptor aud, String slot, Device dev, boolean ready, boolean config_changed){
//invoqué dès que se produit un changement d'état sur un device attaché à l'un des slots de l'agent
}
public void sensorReading(AgentUDescriptor aud, String read_label, Value value) {
//invoqué en réponse à une demande de lecture préalablement réalisée sur un ou plusieurs devices
}
public void sensorChange(AgentUDescriptor aud, String slot, int sensor_id, Value value) {
//invoquée dès qu'un capteur observable, d'un des devices attachés à l'agent, subit un changement de valeur
}
//Avatars associés à l'agent
public void notifyPlugAvatar(AgentUDescriptor aud, String name, Avatar avatar, int contexte){
//invoquée quand un avatar est affectée à l'un des slots de l'agent
}
public void beforeUnplugAvatar(AgentUDescriptor aud, String name, Avatar avatar, int contexte){
//invoquée juste avant qu'un avatar soit dissocié de l'un des slots de l'agent
}
public void notifyUnplugAvatar(AgentUDescriptor aud, String name, int contexte){
//invoquée juste après qu'un avatar soit dissocié de l'un des slots de l'agent
}
public void receive(AgentUDescriptor aud, Avatar avatar, MailBox box, Message mess){
//invoquée dès qu'un message arrive dans la boite aux lettres de l'un des avatars associés à l'agent
}
}
(… édition en cours …)