|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.ObjectSOMA.agent.Agent
Classe astratta che rappresenta un agente.
Per creare un agente e' necessario sottoclassare la classe Agent
ridefinendo i metodi run()
e,
se necessario, putArgument( Object obj )
.
Il place mette a disposizione dell'agente un insieme di risorse,
i cui riferimenti si trovano nel campo agentSystem
.
Il place associa ad ogni agente un worker
che permette di mandare in esecuzione l'agente stesso.
AgentSystem
,
AgentWorker
,
Serialized FormField Summary | |
AgentSystem |
agentSystem
Interfaccia fra agente e sistema. |
Mailbox |
mailbox
|
java.lang.String |
start
|
boolean |
traceable
|
(package private) AgentWorker |
worker
Riferiomento al worker dell'agente. |
Constructor Summary | |
Agent()
Costruttore vuoto. |
Method Summary | |
AgentID |
getID()
Restituisce l'identificatore dell'agente. |
void |
go(PlaceID destination,
java.lang.String method)
Metodo di migrazione verso un altro place. |
void |
idle(java.lang.String method)
Metodo di messa in attesa di un agente. |
void |
putArgument(java.lang.Object obj)
Permette di definire lo stato iniziale dell'agente. |
abstract void |
run()
Metodo mandato in esecuzione all'avvio di un agente. |
void |
setID(AgentID myID)
Permette di specificare l'ID di un agente. |
void |
setTraceable(boolean traceable)
Rende rintracciabile o meno l'agente. |
boolean |
signatureCode(ProfileManager profile)
Il seguente metodo firma l'agente. |
boolean |
signatureState(ProfileManager profile)
|
void |
stop()
Ridefinire questo metodo per liberare le risorse dell'agente e lasciarlo in uno stato consistente, nel caso sia necessario interromperlo. |
java.lang.String |
toString()
Fornisce una rappresentazione in forma di stringa dell'agente. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public java.lang.String start
public transient AgentSystem agentSystem
Interfaccia fra agente e sistema.
agentSystem
contiene i riferimenti agli oggetti cui
l'agente ha accesso. In questo modo e' garantita la protezione del sistema da
possibili attacchi di agenti ostili, a cui non verranno forniti riferimenti
a risorse critiche.
Questo campo e' transient
perche' viene asegnato all'agente
dal place in cui si trova.
public Mailbox mailbox
public boolean traceable
setTraceable( boolean )
transient AgentWorker worker
transient
perche' viene asegnato all'agente
dal place in cui si trova.
Constructor Detail |
public Agent()
Method Detail |
public void setID(AgentID myID)
Permette di specificare l'ID di un agente.
L'implementazione permette di specificare l'ID di un agente una sola volta.
Quest'operazione è fatta dal sistema al momento della creazione di un agente:
SOMA.agent.mobility.AgentManager#createAgent( String agentName, Object argument )
.
Se si fosse usato un costruttore, anche tutte le sottoclassi lo avrebbero dovuto fornire.
public AgentID getID()
public void setTraceable(boolean traceable)
Se l'agente e' rintracciabile e non ha ancora una mailbox, viene creata.
Attenzione: traceable
e' public
, quindi e' comunque
possibile cambiarne il valore.
public void putArgument(java.lang.Object obj)
run()
.
obj
- Un oggetto contenente informazioni di inizializzazione.
Ovviamente l'oggetto può anche contenere una struttura dati complessa.public abstract void run()
public void go(PlaceID destination, java.lang.String method) throws CantGoException
Metodo di migrazione verso un altro place.
Viene invocato il metodo AgentSystem.go( Agent agent, PlaceID destination )
.
destination
- Il place di destinazione, che può appartenere ad un dominio qualsiasi.method
- Il metodo con cui verra' riattivato l'agente, vedi start
Attenzione: se un agente ha il riferimento ad un altro agente può chiamarne il metodo di migrazione, come ogni altro metodo. In sostanza ne può assumere il controllo completo. E' quindi estremamente opportuno mantenere nascosti ad ogni agente i riferiemnti ad altri agenti.
CantGoException
public void idle(java.lang.String method)
Metodo di messa in attesa di un agente.
public void stop()
Ricordarsi aggiornare la variabile start con il nome del metodo da lanciare al prossimo avvio dell'agente.
public java.lang.String toString()
public final boolean signatureCode(ProfileManager profile)
public final boolean signatureState(ProfileManager profile)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |