Class AbstractSenderReceiverCommunication
- java.lang.Object
-
- de.bsvrz.dav.daf.main.impl.config.request.telegramManager.AbstractSenderReceiverCommunication
-
- All Implemented Interfaces:
SenderReceiverCommunication
- Direct Known Subclasses:
ConfigurationRequestArea
,ConfigurationRequestReadData
,ConfigurationRequestUserAdministration
,ConfigurationRequestWriteData
public abstract class AbstractSenderReceiverCommunication extends java.lang.Object implements SenderReceiverCommunication
Bietet eine Kommunikation mit einem Sender und einer Senke. Der Sender verschickt Aufträge, die Antworten auf diese Aufträge werden dann durch die Quelle empfangen.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
AbstractSenderReceiverCommunication.DataListener
Dieses Interface ermöglich es Daten, die durch eine Instanz der KlasseAbstractSenderReceiverCommunication
empfangen wurde, zu verarbeiten, bevor diese durch den normalen Mechanismus bearbeitet werden.-
Nested classes/interfaces inherited from interface de.bsvrz.dav.daf.main.impl.config.request.telegramManager.SenderReceiverCommunication
SenderReceiverCommunication.ConnectionState
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractSenderReceiverCommunication(ClientDavInterface connection, SystemObject senderObject, SystemObject ordererObject)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Schließt alle geöffneten Verbindungen und beendet mögliche ThreadsSenderReceiverCommunication.ConnectionState
getConnectionState()
Diese Methode gibt den derzeitigen Zustand einer Anmeldung als Sender/Quelle wieder.void
handleReply(Data data)
void
init(AttributeGroup requestAtg, Aspect requestAspect, AttributeGroup responseAtg, Aspect responseAspect, short simulationVariant, AbstractSenderReceiverCommunication.DataListener dataListener)
Meldet einen Sender und eine Senke auf die übergebenen Parameter an, wenn alle vier Parameter gesetzt sind.void
init(AttributeGroup requestAtg, Aspect requestAspect, AttributeGroup responseAtg, Aspect responseAspect, AbstractSenderReceiverCommunication.DataListener dataListener)
Meldet einen Sender und eine Senke auf die übergebenen Parameter an, wenn alle vier Parameter gesetzt sind.int
sendData(java.lang.String messageType, byte[] data)
Verschickt eine Anfrage vom angegeben Typ und mit dem in einem Byte Array angegebenen serialisierten Inhalt, die Methode gibt ohne zu blockieren eine neue Anfragenummer zurück.void
sendData(java.lang.String messageType, byte[] data, int queryIndex)
Verschickt eine Antwort vom angegeben Typ zu einer Anfrage.void
setMutableCollectionChangeListener(MutableCollectionChangeListener notifyingMutableCollectionChangeListener)
Setzt den Listener zur Verarbeitung und Verteilung von Aktualisierungsnachrichten bzgl.Data
waitForReply(int requestIndex)
Stellt die Antwort auf eine Anfrage zur Verfügung
-
-
-
Constructor Detail
-
AbstractSenderReceiverCommunication
protected AbstractSenderReceiverCommunication(ClientDavInterface connection, SystemObject senderObject, SystemObject ordererObject)
- Parameters:
connection
- Verbindung zum DaVsenderObject
- Objekt, zum anmelden für SendeaufträgeordererObject
- Objekt, zum anmelden als Senke (sieheinit(de.bsvrz.dav.daf.main.config.AttributeGroup, de.bsvrz.dav.daf.main.config.Aspect, de.bsvrz.dav.daf.main.config.AttributeGroup, de.bsvrz.dav.daf.main.config.Aspect, de.bsvrz.dav.daf.main.impl.config.request.telegramManager.AbstractSenderReceiverCommunication.DataListener)
). Dieses Objekt wird beim versenden auch als "Absender" eingetragen. Dadurch weiss die Empfangende Applikation (senderObjekt), wohin die Antwort muss(wenn eine Senke angemeldet wurde) bzw. wer die Antwort verschickt hat.
-
-
Method Detail
-
init
public final void init(AttributeGroup requestAtg, Aspect requestAspect, AttributeGroup responseAtg, Aspect responseAspect, AbstractSenderReceiverCommunication.DataListener dataListener) throws OneSubscriptionPerSendData
Meldet einen Sender und eine Senke auf die übergebenen Parameter an, wenn alle vier Parameter gesetzt sind. Als Simulationsvariante wird die beim starten der Applikation gesetzt Variante benutzt.Sind die Parameter responseAtg und responseAspect
null
, wird keine Senke angemeldet sondern nur der Sender.- Parameters:
requestAtg
- ATG für Anfrage (Anmeldung als Sender)requestAspect
- Aspekt für Anfragen (Anmeldung für Sender)responseAtg
- ATG für Antworten auf Anfragen (Anmeldung als Senke) odernull
, wenn kein Senke angemeldet werden soll.responseAspect
- Aspekt für Antworten auf Anfragen (Anmeldung als Senke) odernull
, wenn kein Senke angemeldet werden soll.dataListener
- Objekt, das Telegramme verarbeiten und diese dann aus dem Strom der Telegramme entfernen kann. Ist das Objektnull
, werden die Telegramme nicht gefiltert und normal durch diese Klasse bearbeitet.- Throws:
OneSubscriptionPerSendData
- Wenn bereits eine Senke für die gleichen Daten angemeldet wurde.
-
init
public final void init(AttributeGroup requestAtg, Aspect requestAspect, AttributeGroup responseAtg, Aspect responseAspect, short simulationVariant, AbstractSenderReceiverCommunication.DataListener dataListener) throws OneSubscriptionPerSendData
Meldet einen Sender und eine Senke auf die übergebenen Parameter an, wenn alle vier Parameter gesetzt sind. Die zu nutzende Simulationsvariante wird übergeben.Sind die Parameter responseAtg und responseAspect
null
, wird keine Senke angemeldet sondern nur der Sender.- Parameters:
requestAtg
- ATG für Anfrage (Anmeldung als Sender)requestAspect
- Aspekt für Anfragen (Anmeldung für Sender)responseAtg
- ATG für Antworten auf Anfragen (Anmeldung als Senke) odernull
, wenn kein Senke angemeldet werden soll.responseAspect
- Aspekt für Antworten auf Anfragen (Anmeldung als Senke) odernull
, wenn kein Senke angemeldet werden soll.simulationVariant
- Simulationsvariante, die zur Anmeldung benutzt werden solldataListener
- Objekt, das Telegramme verarbeiten und diese dann aus dem Strom der Telegramme entfernen kann. Ist das Objektnull
, werden die Telegramme nicht gefiltert und normal durch diese Klasse bearbeitet.- Throws:
OneSubscriptionPerSendData
- Wenn bereits eine Senke für die gleichen Daten angemeldet wurde.
-
sendData
public int sendData(java.lang.String messageType, byte[] data) throws SendSubscriptionNotConfirmed, java.lang.IllegalStateException
Description copied from interface:SenderReceiverCommunication
Verschickt eine Anfrage vom angegeben Typ und mit dem in einem Byte Array angegebenen serialisierten Inhalt, die Methode gibt ohne zu blockieren eine neue Anfragenummer zurück. Die Antwort kann mitSenderReceiverCommunication.waitForReply(int)
abgerufen werden.- Specified by:
sendData
in interfaceSenderReceiverCommunication
- Parameters:
messageType
- Anfragetypdata
- Daten Serialiserte Anfragedaten.- Returns:
- Index, der benötigt wird um die Antwort auf eine Anfrage zu abzufragen.
- Throws:
SendSubscriptionNotConfirmed
- Wenn noch keine positive Sendesteuerung vom Datenverteiler für die zu versendenden Daten vorliegtjava.lang.IllegalStateException
- Die Daten können versendet werden, aber die Antwort kann nicht empfangen werden, da für den empfang der Daten nicht die benötigten Rechte vorhanden sind. Aus diesem Grund werden die Daten nicht verschickt.
-
sendData
public final void sendData(java.lang.String messageType, byte[] data, int queryIndex) throws SendSubscriptionNotConfirmed, java.lang.IllegalStateException
Description copied from interface:SenderReceiverCommunication
Verschickt eine Antwort vom angegeben Typ zu einer Anfrage.- Specified by:
sendData
in interfaceSenderReceiverCommunication
- Parameters:
messageType
- Antworttypdata
- Daten Serialiserte Anfragedaten.queryIndex
- Index der zugehörigen Anfrage- Throws:
SendSubscriptionNotConfirmed
- Wenn noch keine positive Sendesteuerung vom Datenverteiler für die zu versendenden Daten vorliegtjava.lang.IllegalStateException
- Die Daten können versendet werden, aber die Antwort kann nicht empfangen werden, da für den empfang der Daten nicht die benötigten Rechte vorhanden sind. Aus diesem Grund werden die Daten nicht verschickt.
-
handleReply
public final void handleReply(Data data)
-
waitForReply
public Data waitForReply(int requestIndex) throws RequestException
Description copied from interface:SenderReceiverCommunication
Stellt die Antwort auf eine Anfrage zur Verfügung- Specified by:
waitForReply
in interfaceSenderReceiverCommunication
- Parameters:
requestIndex
- Index, der bei der MethodeSenderReceiverCommunication.sendData(java.lang.String, byte[])
als Rückgabeparameter zurückgegeben wurde- Returns:
- Antwort auf eine Anfrage
- Throws:
RequestException
- Wenn die Kommunikation zum Datenverteiler unterbrochen wurde.
-
getConnectionState
public SenderReceiverCommunication.ConnectionState getConnectionState()
Description copied from interface:SenderReceiverCommunication
Diese Methode gibt den derzeitigen Zustand einer Anmeldung als Sender/Quelle wieder.- Specified by:
getConnectionState
in interfaceSenderReceiverCommunication
- Returns:
- derzeitiger Zustand der Verbindung
-
close
public void close()
Description copied from interface:SenderReceiverCommunication
Schließt alle geöffneten Verbindungen und beendet mögliche Threads- Specified by:
close
in interfaceSenderReceiverCommunication
-
setMutableCollectionChangeListener
public void setMutableCollectionChangeListener(MutableCollectionChangeListener notifyingMutableCollectionChangeListener)
Setzt den Listener zur Verarbeitung und Verteilung von Aktualisierungsnachrichten bzgl. Änderungen der Elemente von dynamischen Mengen bzw. dynamischen Typen. Defaultimplementierung erzeugt eine Exception.- Specified by:
setMutableCollectionChangeListener
in interfaceSenderReceiverCommunication
- Parameters:
notifyingMutableCollectionChangeListener
-- Throws:
java.lang.UnsupportedOperationException
- Wenn die Methode nicht überschrieben wurde.
-
-