public abstract class SingleClientSenderTask extends SingleTask implements ClientSenderInterface
Diese Klasse ist die Basis-Klasse aller Single-Tasks, die mit dem DAV kommunizieren.
| Modifier and Type | Field and Description |
|---|---|
protected AttributeGroup |
atgQuery
Attributgruppe der Archiv-Anfrage und -Antwort.
|
protected DataDescription |
ddResponse
DataDescription der Archiv-Antwort.
|
protected Deserializer |
deserializer |
protected SystemObject |
queryAppObj
Applikations-Objekt des Absenders der Archiv-Anfrage.
|
protected int |
queryIdx
Anfrage-Index der anfragenden Applikation zur Archiv-Anfrage.
|
static int |
SENDCONTROL_TIMEOUT
Zeit in Millisekunden, die auf eine positive Sendesteuerung gewartet wird
|
protected int |
serializerVersion
Serialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt werden muss.
|
protected java.lang.Object |
syncObj
Spezielles Objekt zur Synchronisiserung.
|
TERMINATE_TASK_debug, _shouldTerminate, archMgr, didTree, INDEX_MEMORY_SIZE, persMgrSTART_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION| Constructor and Description |
|---|
SingleClientSenderTask(ArchiveManager archiveMgr,
java.util.concurrent.BlockingQueue<java.lang.Object> inputData)
Erzeugt einen neuen SingleClientSenderTask.
|
| Modifier and Type | Method and Description |
|---|---|
void |
dataRequest(SystemObject object,
DataDescription dataDescription,
byte state)
Sendesteuerung des Datenverteilers an die Applikation.
|
void |
getObjectsFromDav()
Wird aufgerufen, sobald eine Datenverteilerverbindung verfügbar ist. kann benutzt werden, um Objekte zu laden und Anmeldungen durchzuführen.
|
protected void |
init(Data data)
Initialisiert den Task für eine neue Archivanfrage.
|
protected void |
insertData(Serializer serializer) |
boolean |
isRequestSupported(SystemObject object,
DataDescription dataDescription)
Diese Methode muss von der Applikation implementiert werden, um zu signalisieren, ob Sendesteuerungen erwünscht sind und mit der Methode
dataRequest verarbeitet werden. |
protected ArchiveDataSpecification[] |
parseArchiveDataSpec(Deserializer ds,
ResultData resultData) |
protected void |
sendErrorResponse(int messageTypeResult,
java.lang.String errorMessage) |
protected void |
sendErrorResponse(java.lang.String errorMessage) |
protected void |
sendSuccessResponse() |
protected void |
sendSuccessResponse(int messageTypeResult) |
protected void |
subscribeSender()
Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an.
|
protected void |
unsubscribeSender()
Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.
|
getQueue, step, submit, terminateTask, workexecuteaddTaskStepListener, cleanUp, getArchMgr, getName, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, shouldTerminate, start, suspendTaskIfNecessary, taskStepDonepublic static final int SENDCONTROL_TIMEOUT
Zeit in Millisekunden, die auf eine positive Sendesteuerung gewartet wird
protected java.lang.Object syncObj
Spezielles Objekt zur Synchronisiserung. Immer dieses anstatt this verwenden!
protected int serializerVersion
Serialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt werden muss.
protected AttributeGroup atgQuery
Attributgruppe der Archiv-Anfrage und -Antwort.
protected DataDescription ddResponse
DataDescription der Archiv-Antwort.
protected SystemObject queryAppObj
Applikations-Objekt des Absenders der Archiv-Anfrage.
protected int queryIdx
Anfrage-Index der anfragenden Applikation zur Archiv-Anfrage.
protected Deserializer deserializer
public SingleClientSenderTask(ArchiveManager archiveMgr, java.util.concurrent.BlockingQueue<java.lang.Object> inputData)
Erzeugt einen neuen SingleClientSenderTask.
archiveMgr - Der Archiv-Manager.inputData - Eingangswarteschlangepublic void getObjectsFromDav()
TaskWird aufgerufen, sobald eine Datenverteilerverbindung verfügbar ist. kann benutzt werden, um Objekte zu laden und Anmeldungen durchzuführen.
Wichtig: Diese Methode wird im Konstruktor ausgeführt und sollte daher nicht erwarten, dass die Subklasse (this) vollständig initialisiert ist.
getObjectsFromDav in class Taskprotected void init(Data data) throws NoSuchVersionException
Initialisiert den Task für eine neue Archivanfrage.
NoSuchVersionExceptionprotected void sendErrorResponse(java.lang.String errorMessage)
protected void sendSuccessResponse()
protected void sendErrorResponse(int messageTypeResult,
java.lang.String errorMessage)
protected void sendSuccessResponse(int messageTypeResult)
protected void insertData(Serializer serializer) throws java.io.IOException
java.io.IOExceptionprotected void subscribeSender()
throws OneSubscriptionPerSendData
Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an. Registriert den StreamMultiplexer für den Empfang von Flusskontroll-Steuerungspaketen.
OneSubscriptionPerSendDataprotected void unsubscribeSender()
Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.
public void dataRequest(SystemObject object, DataDescription dataDescription, byte state)
de.bsvrz.dav.daf.main.ClientSenderInterfacedataRequest in interface ClientSenderInterfaceobject - Das in der zugehörigen Sendeanmeldung angegebene Objekt, auf das sich die Sendesteuerung bezieht.dataDescription - Beschreibende Informationen zu den angemeldeten Daten auf die sich die Sendesteuerung bezieht.state - Status der Sendesteuerung. Kann einen der Werte START_SENDING, STOP_SENDING,
STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION enthalten.ClientSenderInterface.dataRequest(SystemObject,DataDescription,byte)public boolean isRequestSupported(SystemObject object, DataDescription dataDescription)
de.bsvrz.dav.daf.main.ClientSenderInterfacedataRequest verarbeitet werden. In der Implementierung dieser Methode dürfen keine synchronen Aufrufe, die auf Telegramme vom Datenverteiler
warten (wie z.B. Konfigurationsanfragen) durchgeführt werden, da ansonsten ein Deadlock entsteht.isRequestSupported in interface ClientSenderInterfaceobject - Das in der zugehörigen Sendeanmeldung angegebene System-Objekt.dataDescription - Die in der zugehörigen Sendeanmeldung angegebenen beschreibenden Informationen der angemeldeten Daten.true, falls Sendesteuerungen gewünscht sind, sonst false.ClientSenderInterface.isRequestSupported(SystemObject,DataDescription)protected ArchiveDataSpecification[] parseArchiveDataSpec(Deserializer ds, ResultData resultData) throws java.lang.Exception
java.lang.Exception