AMETAS.event
Class AMETASNotifiableAgent

java.lang.Object
  extended byAMETAS.place.AMETASPlaceUser
      extended byAMETAS.agentdev.AMETASAgent
          extended byAMETAS.event.AMETASNotifiableAgent
All Implemented Interfaces:
AMETASNotifiable, java.io.Serializable

public abstract class AMETASNotifiableAgent
extends AMETASAgent
implements AMETASNotifiable

Ermöglicht Agenten eine einfache Ereignisverarbeitung. Diese Klasse stellt eine Standardimplementierung von notifyListener bereit, die eintreffende Events an die Methoden eines AMETASEventHandler-Objekts weiterleitet. Um all dies braucht sich der Entwickler nicht mehr zu kümmern. Er muss nur noch einen eigenen EventHandler von AMETASEventHandler ableiten, in dem er nur die für ihn relevanten handle-Methoden überschreibt. Diese werden dann automatisch aufgerufen. Dem AMETASNotifiableAgent können mit addEventHandler mehrere EventHandler-Objekte übergeben werden, die alle notifiziert werden. Wichtig hierbei ist, dass die handle-Methoden dieser Objekte nacheinander vom gleichen Thread (Notificator-Thread) aufgerufen werden. Ein EventHandler-Objekt blockiert also alle weiteren bei der Ausführung seiner Handler-Methode. Dies sollte jedoch keine Probleme bereiten, da zum einen ein Agent nicht sehr viele EventHandler registrieren wird und zum anderen alle aufgerufenen EventHandler-Objekte unter der Kontrolle dieses einen Agenten stehen. Er kann also nicht von fremden Objekten blockiert werden.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class AMETAS.agentdev.AMETASAgent
DONT_RELAY, m_bFirstStart, m_Driver, m_sHomePlace
 
Fields inherited from class AMETAS.place.AMETASPlaceUser
m_drvPU
 
Constructor Summary
AMETASNotifiableAgent(AMETASPlaceUserID idNew)
          Konstruktor, mit dem eine spezielle ID verliehen wird.
AMETASNotifiableAgent(java.lang.String sName)
          Konstruktor, mit dem eine spezielle ID erzeugt wird.
AMETASNotifiableAgent(java.lang.String sName, java.lang.String sGroup)
          Konstruktor, mit dem eine spezielle ID erzeugt wird.
 
Method Summary
 void addEventHandler(AMETASEventHandlerIf hnd)
          Fügt diesem AMETASNotifiable einen neuen EventHandler hinzu.
 boolean containsHandler(AMETASEventHandlerIf eh)
          Prüft nach, ob der übergebene Handler in dem Array aller zur Zeit enthaltenen EventHandler vorkommt.
 AMETASEventHandlerIf[] getHandlerList()
          Liefert ein Array aller zur Zeit enthaltenen EventHandler zurück.
 void notifyListener(AMETASEvent evt)
          Eine Standardimplementierung der notifyListener-Methode des Interfaces AMETASNotifiable.
 void removeEventHandler(AMETASEventHandlerIf hnd)
          Entfernt einen EventHandler.
 
Methods inherited from class AMETAS.agentdev.AMETASAgent
firstStart, getDriver, getHomePlace, setDriverIf, setFirstStart, setHomePlace, toString
 
Methods inherited from class AMETAS.place.AMETASPlaceUser
checkPermission, dispatchMessage, getID, getName, getPUDriverIf, getPULoader, getSignableData, handleApplicationMessage, handleCustomMessage, handleMessageMessage, handlePlaceMessage, handleSecurityMessage, handleServiceMessage, handleTradingMessage, invoke, output, recoverError, specializeTypes, submitMessage
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AMETASNotifiableAgent

public AMETASNotifiableAgent(AMETASPlaceUserID idNew)
Konstruktor, mit dem eine spezielle ID verliehen wird. Sie darf während seiner Lebensspanne nicht verändert werden. Dieser Konstruktor muß in abgeleiteten Klassen mit super(AMETASPlaceUserID) ausgeführt werden.

Parameters:
idNew - ID des Agenten
See Also:
AMETASPlaceUserID

AMETASNotifiableAgent

public AMETASNotifiableAgent(java.lang.String sName,
                             java.lang.String sGroup)
Konstruktor, mit dem eine spezielle ID erzeugt wird. Sie darf während seiner Lebensspanne nicht verändert werden.

Parameters:
sName - Name des Agenten
sGroup - Gruppen-ID des Agenten
See Also:
AMETASPlaceUserID

AMETASNotifiableAgent

public AMETASNotifiableAgent(java.lang.String sName)
Konstruktor, mit dem eine spezielle ID erzeugt wird. Sie darf während seiner Lebensspanne nicht verändert werden. Als Gruppen-ID wird NO_GROUP angenommen.

Parameters:
sName - Name des Agenten
See Also:
AMETASPlaceUserID
Method Detail

addEventHandler

public void addEventHandler(AMETASEventHandlerIf hnd)
Fügt diesem AMETASNotifiable einen neuen EventHandler hinzu. Da die Liste der EventHandler eines Agenten bei einer Migration mitgenommen wird, darf ein EventHandler nur genau einmal mit dieser Methode hinzugefügt werden. Dies kann z.B. im Konstruktor des Agenten erfolgen. Nach einer Migration muß der Agent sich natürlich wieder neu für die gewünschten Events über seinen Treiber registrieren!

Parameters:
hnd - EventHandler dieses Agenten

removeEventHandler

public void removeEventHandler(AMETASEventHandlerIf hnd)
Entfernt einen EventHandler.

Parameters:
hnd - Zu entfernender EventHandler dieses Agenten

getHandlerList

public AMETASEventHandlerIf[] getHandlerList()
Liefert ein Array aller zur Zeit enthaltenen EventHandler zurück.

Returns:
Ein Array aller zur Zeit enthaltenen EventHandler, null wenn keine Handler existieren.
Since:
2.4.0

containsHandler

public boolean containsHandler(AMETASEventHandlerIf eh)
Prüft nach, ob der übergebene Handler in dem Array aller zur Zeit enthaltenen EventHandler vorkommt.

Returns:
true falls der übergebene Handler in dem Array aller zur Zeit enthaltenen EventHandler vorkommt, sonst false.
Since:
2.4.0

notifyListener

public void notifyListener(AMETASEvent evt)
Eine Standardimplementierung der notifyListener-Methode des Interfaces AMETASNotifiable. Sie ruft die handleEvent-Methoden des eingesetzten EventHandlers auf.

Specified by:
notifyListener in interface AMETASNotifiable
Parameters:
evt - Übergebenes Ereignis.