public abstract class SingleClientSenderTask extends SingleTask implements ClientSenderInterface
Thread.State, Thread.UncaughtExceptionHandler
Modifier and Type | Field and Description |
---|---|
protected static AttributeGroup |
atgQuery
Attributgruppe der Archiv-Anfrage und -Antwort.
|
protected static 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.
|
private ByteArrayOutputStream |
resultStream |
static int |
SENDCONTROL_TIMEOUT
Zeit in Millisekunden, die auf eine positive Sendesteuerung gewartet wird
|
private boolean |
sendingAllowed
Aktueller Zustand der Sendesteuerung.
|
private Serializer |
serializer |
protected int |
serializerVersion
Serialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt werden muss.
|
protected Object |
syncObj
Spezielles Objekt zur Synchronisiserung.
|
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListeners
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
Constructor and Description |
---|
SingleClientSenderTask(ArchiveManager archiveMgr,
RingOfDeathListener rodl,
RingBuffer<ResultData> 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.
|
private int |
getMessageTypeResult() |
static void |
getObjectsFromDAV(ClientDavInterface davCon)
In dieser Methode werden alle notwendigen Objekte von DAV geladen.
|
protected void |
init(Data data)
Initialisiert den Task fuer 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,
String errorMessage) |
protected void |
sendErrorResponse(String errorMessage) |
private void |
sendResponse(boolean success,
String msg) |
private void |
sendResponse(int messageTypeResult,
boolean success,
String msg) |
protected void |
sendSuccessResponse() |
protected void |
sendSuccessResponse(int messageTypeResult) |
protected void |
subscribeSender()
Meldet den Task als Sender fuer Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an.
|
protected void |
unsubscribeSender()
Meldet den Task als Sender fuer Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.
|
run, work
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
public static final int SENDCONTROL_TIMEOUT
private boolean sendingAllowed
protected Object syncObj
protected int serializerVersion
protected static AttributeGroup atgQuery
protected static DataDescription ddResponse
protected SystemObject queryAppObj
protected int queryIdx
private ByteArrayOutputStream resultStream
private Serializer serializer
protected Deserializer deserializer
public SingleClientSenderTask(ArchiveManager archiveMgr, RingOfDeathListener rodl, RingBuffer<ResultData> inputData) throws ConfigurationException
archiveMgr
- Der Archiv-Manager.rodl
- Der Listener wird benachrichtigt beim Beenden der Task.inputData
- EingangswarteschlangeConfigurationException
public static void getObjectsFromDAV(ClientDavInterface davCon) throws ConfigurationException
davCon
- Verbindung zum DatenverteilerConfigurationException
protected void init(Data data) throws NoSuchVersionException
NoSuchVersionException
protected void sendErrorResponse(String errorMessage)
protected void sendSuccessResponse()
protected void sendErrorResponse(int messageTypeResult, String errorMessage)
protected void sendSuccessResponse(int messageTypeResult)
private void sendResponse(boolean success, String msg)
private void sendResponse(int messageTypeResult, boolean success, String msg)
protected void insertData(Serializer serializer) throws IOException
IOException
private int getMessageTypeResult()
protected void subscribeSender() throws ConfigurationException, OneSubscriptionPerSendData
protected void unsubscribeSender()
public void dataRequest(SystemObject object, DataDescription dataDescription, byte state)
de.bsvrz.dav.daf.main.ClientSenderInterface
dataRequest
in interface ClientSenderInterface
object
- 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.ClientSenderInterface
dataRequest
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 ClientSenderInterface
object
- 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 Exception
Exception