de.bsvrz.ars.ars.mgmt.tasks
Class ArchiveQueryTask

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.ars.ars.mgmt.tasks.Task
          extended by de.bsvrz.ars.ars.mgmt.tasks.MultiTask
              extended by de.bsvrz.ars.ars.mgmt.tasks.QueryTask
                  extended by de.bsvrz.ars.ars.mgmt.tasks.ArchiveQueryTask
All Implemented Interfaces:
SuspendableTask, ClientSenderInterface, StreamMultiplexerDirector, Runnable

public class ArchiveQueryTask
extends QueryTask
implements StreamMultiplexerDirector

Task fuer Bearbeitung von Archivanfragen.

Die Archivanfrage wird analysiert und in ihre Unterabfragen Query zerlegt. Die Beantwortung erfolgt streambasiert mit einem Stream pro Unterabfrage.

Author:
beck et al. projects GmbH, Thomas Schäfer, Alexander Schmidt

Nested Class Summary
 
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
static int MAXIMUM_REQUESTS_PER_APPLICATION
          Maximale Anzahl paralleler Archivanfragen je 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
 void dataRequest(SystemObject object, DataDescription dataDescription, byte state)
           
static int getBlockingFactorMux()
           
static int getBufferSizeMux()
           
protected  void init()
          Initialisiert den Task fuer eine neue Archivanfrage.
 void sendData(byte[] streamDataPacket)
           
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

MAXIMUM_REQUESTS_PER_APPLICATION

public static final int MAXIMUM_REQUESTS_PER_APPLICATION
Maximale Anzahl paralleler Archivanfragen je Applikation

See Also:
Constant Field Values
Constructor Detail

ArchiveQueryTask

public ArchiveQueryTask(ArchiveManager archiveMgr,
                        MultiTaskManager tMgr,
                        FlowControlTask flowCtrl)
Erzeugt eine neue Query-Task.

Parameters:
archiveMgr - Archiv-Verwaltung
tMgr - Zugeordneter Task-Manager
flowCtrl - Verwaltung der Flusskontrolle
Method Detail

subscribeObjects

public static void subscribeObjects(ArchiveManager archMgr,
                                    InQueuesMgr.DataReceiver receiver)
Fuehrt alle notwendigen Anmeldungen durch.

Parameters:
archMgr - Archiv-Verwaltung
receiver - Empfaengerobjekt

setBlockingFactorMux

public 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").

Parameters:
bFMuxParam - Parametrierter Blocking-Faktor des StreamMultiplexers

setBufferSizeMux

public 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").

Parameters:
bSMuxParam - Parametrierte Puffergroesse des StreamMultiplexers

getBlockingFactorMux

public static int getBlockingFactorMux()
See Also:
setBlockingFactorMux(int)

getBufferSizeMux

public static int getBufferSizeMux()
See Also:
setBlockingFactorMux(int)

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 class MultiTask
See Also:
MultiTask.work()

sendData

public void sendData(byte[] streamDataPacket)
Specified by:
sendData in interface StreamMultiplexerDirector
See Also:
StreamMultiplexerDirector.sendData(byte[])

take

public byte[] take(int indexOfStream)
Specified by:
take in interface StreamMultiplexerDirector
See Also:
StreamMultiplexerDirector.take(int)

streamAborted

public void streamAborted(int indexOfStream)
Specified by:
streamAborted in interface StreamMultiplexerDirector
See Also:
StreamMultiplexerDirector.streamAborted(int)

dataRequest

public void dataRequest(SystemObject object,
                        DataDescription dataDescription,
                        byte state)
Specified by:
dataRequest in interface ClientSenderInterface
Overrides:
dataRequest in class QueryTask
See Also:
ClientSenderInterface.dataRequest(SystemObject, DataDescription, byte)

init

protected void init()
Initialisiert den Task fuer eine neue Archivanfrage.

Overrides:
init in class QueryTask

unsubscribeSender

protected void unsubscribeSender()
Meldet den Task als Sender fuer Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab. Deregistriert den StreamMultiplexer fuer den Empfang von Flusskontroll-Steuerungspaketen.

Overrides:
unsubscribeSender in class QueryTask