public class ArchiveQueryTask extends QueryTask implements StreamMultiplexerDirector
Query zerlegt. Die Beantwortung erfolgt streambasiert mit einem Stream pro Unterabfrage.QueryTask.SendingStateThread.State, Thread.UncaughtExceptionHandleratgQuery, bosResult, ddResponse, deserializer, gData, gResultData, MIN_CONTAINER_FILES, NA, NN, OA, ON, queryAppObj, queryIdx, sendingState, serializer, serializerVersion, syncObj, t_lsMax, tempMemresultData, taskMgrarchMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListenersMAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITYSTART_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, subscribeSenderdoWork, getTaskIndex, run, setTaskIndexaddTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTaskactiveCount, 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, yieldpublic 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()
MultiTaskwork in class MultiTaskMultiTask.work()public void sendData(byte[] streamDataPacket)
de.bsvrz.sys.funclib.communicationStreams.StreamMultiplexerDirectorStreamDemultiplexer.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 StreamMultiplexerDirectorstreamDataPacket - Ein Nutzdatenpaket vom StreamMultiplexer zum StreamDemultiplexerStreamMultiplexerDirector.sendData(byte[])public byte[] take(int indexOfStream)
de.bsvrz.sys.funclib.communicationStreams.StreamMultiplexerDirectorStreamDemultiplexer.take(int) bereit gestellt
wird.take in interface StreamMultiplexerDirectorindexOfStream - Stream über den die Nutzdaten übertragen werden sollennull zurück
gegeben.StreamMultiplexerDirector.take(int)public void streamAborted(int indexOfStream)
de.bsvrz.sys.funclib.communicationStreams.StreamMultiplexerDirectorstreamAborted in interface StreamMultiplexerDirectorindexOfStream - 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.ClientSenderInterfacedataRequest in interface ClientSenderInterfacedataRequest in class QueryTaskobject - 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