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, syncObjFields inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask
resultDataFields inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
TERMINATE_TASKFields inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
_debug, _shouldTerminate, archMgr, didTree, persMgrFields 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 voidcleanUp()Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde.voiddataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)static intgetBlockingFactorMux()static intgetBufferSizeMux()intgetMaximumRequestsPerApplication()Gibt die konfigurierte maximale Anzahl paralleler Archivanfragen pro Applikation zurück.protected voidinit()Initialisiert den Task für eine neue Archivanfrage.static voidsetBlockingFactorMux(int bFMuxParam)Über diese Methode kann die Parametrierung den Blocking-Faktor des StreamMultiplexers auf den parametrierten Wert setzen (Attribut "AnzahlBlocks" in Attributgruppe "ArchivEinstellung").static voidsetBufferSizeMux(int bSMuxParam)Über diese Methode kann die Parametrierung die PufferGröße des StreamMultiplexers auf den parametrierten Wert setzen (Attribut "AnzahlBytes" in Attributgruppe "ArchivEinstellung").voidsetMaximumRequestsPerApplication(int maximumRequestsPerApplication)Setzt die maximale Anzahl paralleler Archivanfragen pro Applikationstatic voidsubscribeObjects(ArchiveManager archMgr, InQueuesMgr.DataReceiver receiver)Fuehrt alle notwendigen Anmeldungen durch.voidterminateTask()Terminiert den Task.protected voidunsubscribeSender()Meldet den Task als Sender für Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.voidwork()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, waitForSendControlMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.MultiTask
setTaskIndex, workMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
executeMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
addTaskStepListener, getName, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, start, taskStepDoneMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
getArchMgr, shouldTerminate, suspendTaskIfNecessaryMethods 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:MultiTaskDiese Methode ist zu überschreiben, um die konkrete Aufgabe der Task zu implementieren. In der Methode soll keine weitere Synchronisation stattfinden.- Specified by:
workin 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:
dataRequestin interfacede.bsvrz.dav.daf.main.ClientSenderInterface- Overrides:
dataRequestin classQueryTask- See Also:
ClientSenderInterface.dataRequest(SystemObject, DataDescription, byte)
-
terminateTask
public void terminateTask()Description copied from class:QueueTaskTerminiert 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:
terminateTaskin classQueueTask<de.bsvrz.dav.daf.main.ResultData>
-
cleanUp
protected void cleanUp()Description copied from class:TaskWird 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:
unsubscribeSenderin classQueryTask
-