|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.Thread
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.MultiTask
de.bsvrz.ars.ars.mgmt.tasks.QueryTask
de.bsvrz.ars.ars.mgmt.tasks.ArchiveQueryTask
public class ArchiveQueryTask
Task fuer Bearbeitung von Archivanfragen.
Die Archivanfrage wird analysiert und in ihre UnterabfragenArchiveQueryTask.Query
zerlegt. Die Beantwortung erfolgt streambasiert mit einem Stream pro Unterabfrage.
Nested Class Summary | |
---|---|
private class |
ArchiveQueryTask.Container
Diese Klasse kapselt alle notwendigen Informationen zu einem Ergebnis-Datencontainer. |
private class |
ArchiveQueryTask.ContWalk
Im Container-Walk werden alle Container einer Datensatzart gesammelt, die zur Beantwortung einer Unterabfrage (@link Query} benoetigt werden, da sie Ergebnisdatensaetze enthalten. |
private class |
ArchiveQueryTask.Info
|
private class |
ArchiveQueryTask.Query
Klasse, die eine einzelne Unterabfrage ( ArchiveDataSpecification ) aus der Archivanfrage und die zugehoerigen Daten fuer die Archivantwort kapselt. |
private class |
ArchiveQueryTask.SimpleArchiveData
Klasse, die einen Archivdatensatz mit den zugehoerigen Zeitstempeln und Datenindex kapselt. |
Nested classes/interfaces inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueryTask |
---|
QueryTask.SendingState |
Nested classes/interfaces inherited from class java.lang.Thread |
---|
Thread.State, Thread.UncaughtExceptionHandler |
Field Summary | |
---|---|
private static int |
BLOCKING_FACTOR_MUX_DEFAULT
Default-Anzahl der Pakete, die pro Stream initial an den Empfaenger geschickt werden duerfen. |
private static int |
blockingFactorMuxParam
Parametrierte Anzahl der Pakete, die pro Stream an den Empfaenger geschickt werden duerfen. |
private int |
blockingFactorMuxUsed
Tatsaechlich benutzte Anzahl der Pakete, die pro Stream an den Empfaenger geschickt werden, angepasst an die Groesse des Empfaengerpuffers. |
private static int |
BUFFER_SIZE_MUX_DEFAULT
Default-Groesse des Puffers im Stream-Multiplexer. |
private static int |
bufferSizeMuxParam
Parametrierte Groesse des Puffers im Stream-Multiplexer. |
private int |
bufferSizeMuxUsed
Tatsaechlich benutzte Groesse des Puffers im Stream-Multiplexer, angepasst an die Groesse des Empfaengerpuffers. |
private Inflater |
decompresser
Zum Dekomprimieren. |
private FlowControlTask |
flowCtrl
Task zur Verarbeitung der Flusskontroll-Steuerungspakete. |
private boolean |
initialResponseSent
Wurde die initiale Antwort (kann auch Fehlermeldung sein) verschickt? |
static int |
MAXIMUM_REQUESTS_PER_APPLICATION
Maximale Anzahl paralleler Archivanfragen je Applikation |
private StreamMultiplexer |
mux
Der StreamMultiplexer zum Verpacken der Ergebnis-Datensaetze. |
private List<ArchiveQueryTask.Query> |
queries
Liste der einzelnen Unterabfragen aus der aktuellen Archivanfrage. |
private int |
receiverBufferSize
Groesse des Empfangspuffers der anfragenden Applikation. |
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueryTask |
---|
atgQuery, bosResult, ddResponse, deserializer, gData, gResultData, MIN_CONTAINER_FILES, NA, NN, OA, ON, queryAppObj, queryIdx, sendingState, serializer, serializerVersion, syncObj, t_lsMax, tempMem |
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask |
---|
resultData, taskMgr |
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task |
---|
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListeners |
Fields inherited from class java.lang.Thread |
---|
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
Fields inherited from interface de.bsvrz.dav.daf.main.ClientSenderInterface |
---|
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION |
Constructor Summary | |
---|---|
ArchiveQueryTask(ArchiveManager archiveMgr,
MultiTaskManager tMgr,
FlowControlTask flowCtrl)
Erzeugt eine neue Query-Task. |
Method Summary | |
---|---|
private void |
abortQueries()
Markiert alle Unterabfragen als erledigt und schliesst alle noch offenen Datensatz-Iteratoren und Container. |
private void |
analyze()
Analysiert die aktuelle Archivanfrage und fuellt die Liste der ArchiveQueryTask.Query . |
private void |
configureMuxParameter()
Bestimmt die Parameter bufferSizeStreamMultiplexer und blockingFactor, mit denen der StreamMultiplexer per Konstruktor parametriert wird, anhand der Werte aus den Archivsystem-Einstellungen und dem tatsaechlich vorhandenen Empfangspuffer des Empfaengers. |
void |
dataRequest(SystemObject object,
DataDescription dataDescription,
byte state)
|
static int |
getBlockingFactorMux()
|
static int |
getBufferSizeMux()
|
private int |
getIntervalErrorQueryIdx()
Liefert den Index der Query, bei der die angefragten Intervallgrenzen vertauscht sind. |
protected void |
init()
Initialisiert den Task fuer eine neue Archivanfrage. |
void |
sendData(byte[] streamDataPacket)
|
private void |
sendInitialResponse(boolean success,
String errorMsg)
Sendet die initiale Ergebnismeldung zur Archiv-Anfrage an das Empfaenger-Applikations-Objekt. |
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 |
streamAborted(int indexOfStream)
|
static void |
subscribeObjects(ArchiveManager archMgr,
InQueuesMgr.DataReceiver receiver)
Fuehrt alle notwendigen Anmeldungen durch. |
byte[] |
take(int indexOfStream)
|
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. |
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueryTask |
---|
createQueryData, getObjectsFromDAV, isRequestSupported, parseArchiveDataSpec, sendResultData, setT_lsMax, subscribeSender |
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask |
---|
doWork, getTaskIndex, run, setTaskIndex |
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task |
---|
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask |
Methods inherited from class java.lang.Thread |
---|
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 |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private static final int BLOCKING_FACTOR_MUX_DEFAULT
private static int blockingFactorMuxParam
private int blockingFactorMuxUsed
private static final int BUFFER_SIZE_MUX_DEFAULT
private static int bufferSizeMuxParam
private int bufferSizeMuxUsed
private StreamMultiplexer mux
private FlowControlTask flowCtrl
private List<ArchiveQueryTask.Query> queries
private int receiverBufferSize
private boolean initialResponseSent
private Inflater decompresser
public static final int MAXIMUM_REQUESTS_PER_APPLICATION
Constructor Detail |
---|
public ArchiveQueryTask(ArchiveManager archiveMgr, MultiTaskManager tMgr, FlowControlTask flowCtrl)
archiveMgr
- Archiv-VerwaltungtMgr
- Zugeordneter Task-ManagerflowCtrl
- Verwaltung der FlusskontrolleMethod Detail |
---|
public 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 void work()
MultiTask
work
in class MultiTask
MultiTask.work()
public void sendData(byte[] streamDataPacket)
sendData
in interface StreamMultiplexerDirector
StreamMultiplexerDirector.sendData(byte[])
public byte[] take(int indexOfStream)
take
in interface StreamMultiplexerDirector
StreamMultiplexerDirector.take(int)
public void streamAborted(int indexOfStream)
streamAborted
in interface StreamMultiplexerDirector
StreamMultiplexerDirector.streamAborted(int)
public void dataRequest(SystemObject object, DataDescription dataDescription, byte state)
dataRequest
in interface ClientSenderInterface
dataRequest
in class QueryTask
ClientSenderInterface.dataRequest(SystemObject, DataDescription, byte)
protected void init()
init
in class QueryTask
private void analyze() throws NoSuchVersionException, IOException, PersistenceException, IndexException
ArchiveQueryTask.Query
.
NoSuchVersionException
IOException
NoSuchVersionException
IOException
IndexException
PersistenceException
IndexException
PersistenceException
protected void unsubscribeSender()
unsubscribeSender
in class QueryTask
private void sendInitialResponse(boolean success, String errorMsg) throws IOException
success
- Anfrage erfolgreicherrorMsg
- Fehlermeldung bei Misserfolg
IOException
private void abortQueries()
private int getIntervalErrorQueryIdx()
private void configureMuxParameter()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |