Package de.bsvrz.ars.ars.mgmt.tasks
Class ArchiveQueryTask
java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
de.bsvrz.ars.ars.mgmt.tasks.QueueTask<de.bsvrz.dav.daf.main.ResultData>
de.bsvrz.ars.ars.mgmt.tasks.MultiTask
de.bsvrz.ars.ars.mgmt.tasks.QueryTask
de.bsvrz.ars.ars.mgmt.tasks.ArchiveQueryTask
- All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientSenderInterface
public class ArchiveQueryTask extends QueryTask
Task für Bearbeitung von Archivanfragen.
Die Archivanfrage wird analysiert und in ihre Unterabfragen Query
zerlegt. Die Beantwortung erfolgt streambasiert mit einem Stream pro Unterabfrage.
-
Nested Class Summary
Nested classes/interfaces inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueryTask
QueryTask.SendingState
-
Field Summary
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueryTask
atgQuery, bosResult, ddResponse, deserializer, gData, gResultData, queryAppObj, queryIdx, sendingState, serializer, serializerVersion, syncObj
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask
resultData
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
TERMINATE_TASK
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
_debug, _shouldTerminate, archMgr, didTree, persMgr
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
Constructors Constructor Description ArchiveQueryTask(ArchiveManager archiveMgr, MultiTaskManager tMgr, FlowControlTask flowCtrl)
Erzeugt eine neue Query-Task. -
Method Summary
Modifier and Type Method Description protected void
cleanUp()
Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde.void
dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)
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 für eine neue Archivanfrage.static void
setBlockingFactorMux(int bFMuxParam)
Über 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)
Über diese Methode kann die Parametrierung die PufferGröße des StreamMultiplexers auf den parametrierten Wert setzen (Attribut "AnzahlBytes" in Attributgruppe "ArchivEinstellung").void
setMaximumRequestsPerApplication(int maximumRequestsPerApplication)
Setzt die maximale Anzahl paralleler Archivanfragen pro Applikationstatic void
subscribeObjects(ArchiveManager archMgr, InQueuesMgr.DataReceiver receiver)
Fuehrt alle notwendigen Anmeldungen durch.void
terminateTask()
Terminiert den Task.protected void
unsubscribeSender()
Meldet den Task als Sender für 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, subscribeSender, waitForSendControl
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask
setTaskIndex, work
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
execute
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
addTaskStepListener, getName, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, start, taskStepDone
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
getArchMgr, shouldTerminate, suspendTaskIfNecessary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
ArchiveQueryTask
public ArchiveQueryTask(ArchiveManager archiveMgr, MultiTaskManager tMgr, FlowControlTask flowCtrl)Erzeugt eine neue Query-Task.- Parameters:
archiveMgr
- Archiv-VerwaltungtMgr
- Zugeordneter Task-ManagerflowCtrl
- Verwaltung der Flusskontrolle
-
-
Method Details
-
subscribeObjects
Fuehrt alle notwendigen Anmeldungen durch.- Parameters:
archMgr
- Archiv-Verwaltungreceiver
- Empfaengerobjekt
-
setBlockingFactorMux
public static void setBlockingFactorMux(int bFMuxParam)Über diese Methode kann die Parametrierung den Blocking-Faktor des StreamMultiplexers auf den parametrierten Wert setzen (Attribut "AnzahlBlocks" in Attributgruppe "ArchivEinstellung").- Parameters:
bFMuxParam
- Parametrierter Blocking-Faktor des StreamMultiplexers
-
setBufferSizeMux
public static void setBufferSizeMux(int bSMuxParam)Über diese Methode kann die Parametrierung die PufferGröße des StreamMultiplexers auf den parametrierten Wert setzen (Attribut "AnzahlBytes" in Attributgruppe "ArchivEinstellung").- Parameters:
bSMuxParam
- Parametrierte PufferGröße des StreamMultiplexers
-
getBlockingFactorMux
public static int getBlockingFactorMux()- See Also:
setBlockingFactorMux(int)
-
getBufferSizeMux
public static int getBufferSizeMux()- See Also:
setBlockingFactorMux(int)
-
getMaximumRequestsPerApplication
public int getMaximumRequestsPerApplication()Gibt die konfigurierte maximale Anzahl paralleler Archivanfragen pro Applikation zurück.- Returns:
- Anzahl Archivanfragen pro Applikation
-
setMaximumRequestsPerApplication
public void setMaximumRequestsPerApplication(int maximumRequestsPerApplication)Setzt die maximale Anzahl paralleler Archivanfragen pro Applikation- Parameters:
maximumRequestsPerApplication
- neuer Wert ( > 0 )
-
work
public void work()Description copied from class:MultiTask
Diese Methode ist zu überschreiben, um die konkrete Aufgabe der Task zu implementieren. In der Methode soll keine weitere Synchronisation stattfinden.- Specified by:
work
in classMultiTask
- See Also:
MultiTask.work()
-
dataRequest
public void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)- Specified by:
dataRequest
in interfacede.bsvrz.dav.daf.main.ClientSenderInterface
- Overrides:
dataRequest
in classQueryTask
- See Also:
ClientSenderInterface.dataRequest(SystemObject, DataDescription, byte)
-
terminateTask
public void terminateTask()Description copied from class:QueueTask
Terminiert den Task. Diese Methode fügt zusätzlich in die Queue einen speziellen Token ein, mit dem der Aufruf von_queue.take()
in derQueueTask.step()
-Methode aufgeweckt wird, falls die Methode dort gerade auf einen neuen Auftrag warten.- Overrides:
terminateTask
in classQueueTask<de.bsvrz.dav.daf.main.ResultData>
-
cleanUp
protected void cleanUp()Description copied from class:Task
Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde. Dieser Code wird im selben Thread ausgeführt, wie der eigentliche TaskTut standardmäßig nichts, kann überschrieben werden um Daten aufzuräumen, Abmeldungen durchzuführen usw.
-
init
protected void init()Initialisiert den Task für eine neue Archivanfrage. -
unsubscribeSender
protected void unsubscribeSender()Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab. Deregistriert den StreamMultiplexer für den Empfang von Flusskontroll-Steuerungspaketen.- Overrides:
unsubscribeSender
in classQueryTask
-