public class ArchiveQueryTask extends QueryTask implements StreamMultiplexerDirector
Query
zerlegt. Die Beantwortung erfolgt streambasiert mit einem Stream pro Unterabfrage.QueryTask.SendingState
Thread.State, Thread.UncaughtExceptionHandler
atgQuery, bosResult, ddResponse, deserializer, gData, gResultData, MIN_CONTAINER_FILES, NA, NN, OA, ON, queryAppObj, queryIdx, sendingState, serializer, serializerVersion, syncObj, t_lsMax, tempMem
resultData, taskMgr
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 |
---|
ArchiveQueryTask(ArchiveManager archiveMgr,
MultiTaskManager tMgr,
FlowControlTask flowCtrl)
Erzeugt eine neue Query-Task.
|
Modifier and Type | Method and Description |
---|---|
void |
dataRequest(SystemObject object,
DataDescription dataDescription,
byte state)
Sendesteuerung des Datenverteilers an die Applikation.
|
static int |
getBlockingFactorMux() |
static int |
getBufferSizeMux() |
int |
getMaximumRequestsPerApplication()
Gibt die konfigurierte maximale Anzahl paralleler Archivanfragen pro Applikation zurück.
|
protected void |
init()
Initialisiert den Task fuer eine neue Archivanfrage.
|
void |
sendData(byte[] streamDataPacket)
Diese Methode wird von einem StreamMultiplexer aufgerufen und wenn ein Byte-Array an den entsprechenden
StreamDemultiplexer gesendet werden soll.
|
static void |
setBlockingFactorMux(int bFMuxParam)
Ueber diese Methode kann die Parametrierung den Blocking-Faktor des StreamMultiplexers auf den parametrierten Wert setzen (Attribut "AnzahlBlocks" in
Attributgruppe "ArchivEinstellung").
|
static void |
setBufferSizeMux(int bSMuxParam)
Ueber diese Methode kann die Parametrierung die Puffergroesse des StreamMultiplexers auf den parametrierten Wert setzen (Attribut "AnzahlBytes" in
Attributgruppe "ArchivEinstellung").
|
void |
setMaximumRequestsPerApplication(int maximumRequestsPerApplication)
Setzt die maximale Anzahl paralleler Archivanfragen pro Applikation
|
void |
streamAborted(int indexOfStream)
Wenn die Empfängerapplikation keine Nutzdaten mehr verarbeiten kann (aus welchem Grund auch immer), wird sie den
Stream auf Empfängerseite (StreamDemultiplexer) mit abort beenden.
|
static void |
subscribeObjects(ArchiveManager archMgr,
InQueuesMgr.DataReceiver receiver)
Fuehrt alle notwendigen Anmeldungen durch.
|
byte[] |
take(int indexOfStream)
Diese Methode wird von einem StreamMultiplexer aufgerufen, sobald dieser Daten an einen StreamDemultiplexer
verschicken darf.
|
protected void |
unsubscribeSender()
Meldet den Task als Sender fuer Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.
|
void |
work()
Diese Methode ist zu überschreiben, um die konkrete Aufgabe der Task zu implementieren.
|
createQueryData, getObjectsFromDAV, isRequestSupported, parseArchiveDataSpec, sendResultData, setT_lsMax, subscribeSender
doWork, getTaskIndex, run, setTaskIndex
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 ArchiveQueryTask(ArchiveManager archiveMgr, MultiTaskManager tMgr, FlowControlTask flowCtrl)
archiveMgr
- Archiv-VerwaltungtMgr
- Zugeordneter Task-ManagerflowCtrl
- Verwaltung der Flusskontrollepublic static void subscribeObjects(ArchiveManager archMgr, InQueuesMgr.DataReceiver receiver)
archMgr
- Archiv-Verwaltungreceiver
- Empfaengerobjektpublic static void setBlockingFactorMux(int bFMuxParam)
bFMuxParam
- Parametrierter Blocking-Faktor des StreamMultiplexerspublic static void setBufferSizeMux(int bSMuxParam)
bSMuxParam
- Parametrierte Puffergroesse des StreamMultiplexerspublic static int getBlockingFactorMux()
setBlockingFactorMux(int)
public static int getBufferSizeMux()
setBlockingFactorMux(int)
public int getMaximumRequestsPerApplication()
public void setMaximumRequestsPerApplication(int maximumRequestsPerApplication)
maximumRequestsPerApplication
- neuer Wert ( > 0 )public void work()
MultiTask
work
in class MultiTask
MultiTask.work()
public void sendData(byte[] streamDataPacket)
de.bsvrz.sys.funclib.communicationStreams.StreamMultiplexerDirector
StreamDemultiplexer.receivedDataFromSender(byte[])
aufgerufen werden.
Das Byte-Array enthält kodiert den Index des Streams, den Index des Pakets, die Größe des Byte-Arrays in dem
die Nutzdaten gespeichert sind und die Nutzdaten.sendData
in interface StreamMultiplexerDirector
streamDataPacket
- Ein Nutzdatenpaket vom StreamMultiplexer zum StreamDemultiplexerStreamMultiplexerDirector.sendData(byte[])
public byte[] take(int indexOfStream)
de.bsvrz.sys.funclib.communicationStreams.StreamMultiplexerDirector
StreamDemultiplexer.take(int)
bereit gestellt
wird.take
in interface StreamMultiplexerDirector
indexOfStream
- Stream über den die Nutzdaten übertragen werden sollennull
zurück
gegeben.StreamMultiplexerDirector.take(int)
public void streamAborted(int indexOfStream)
de.bsvrz.sys.funclib.communicationStreams.StreamMultiplexerDirector
streamAborted
in interface StreamMultiplexerDirector
indexOfStream
- Index des Streams, dessen Nutzdaten in der Senderapplikation verworfen werden könnenStreamMultiplexerDirector.streamAborted(int)
public void dataRequest(SystemObject object, DataDescription dataDescription, byte state)
de.bsvrz.dav.daf.main.ClientSenderInterface
dataRequest
in interface ClientSenderInterface
dataRequest
in class QueryTask
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)
protected void init()
protected void unsubscribeSender()
unsubscribeSender
in class QueryTask