public abstract class QueryTask extends MultiTask implements ClientSenderInterface
Modifier and Type | Class and Description |
---|---|
protected static class |
QueryTask.SendingState
Zustand der Sendesteuerung (Senden / Anhalten / Abbrechen).
|
Thread.State, Thread.UncaughtExceptionHandler
Modifier and Type | Field and Description |
---|---|
protected static AttributeGroup |
atgQuery
Attributgruppe fuer Archiv-Anfragen.
|
protected ByteArrayOutputStream |
bosResult
Wiederverwendbarer ByteArrayOutputStream.
|
protected static DataDescription |
ddResponse
Datenidentifikation der Archiv-Antwort.
|
protected Deserializer |
deserializer
Der Deserialisierer aus DAF.
|
protected Data |
gData
Dieses Datenobjekt wird zum Senden des Ergebnisses verwendet
|
protected ResultData |
gResultData
Wird zum Senden verwendet (muss nur einmal angelegt werden)
|
static int |
MIN_CONTAINER_FILES
Mindest-Anzahl an ContainerFile-Objekten, die der PersistenzManager fuer diesen Task vorhalten soll.
|
protected static ArchiveDataKind |
NA
Datensatzart Nachgefordert Aktuell
|
protected static ArchiveDataKind |
NN
Datensatzart Nachgefordert Nachgeliefert
|
protected static ArchiveDataKind |
OA
Datensatzart Online Aktuell
|
protected static ArchiveDataKind |
ON
Datensatzart Online Nachgeliefert
|
protected SystemObject |
queryAppObj
Applikations-Objekt des Absenders der Archiv-Anfrage.
|
protected int |
queryIdx
Anfrage-Index der anfragenden Applikation zur Archiv-Anfrage.
|
protected QueryTask.SendingState |
sendingState
Aktueller Zustand der Sendesteuerung.
|
protected Serializer |
serializer
Der Serialisierer aus DAF.
|
protected int |
serializerVersion
Serialisiererversion der anfragenden Applikation, mit der auch die Antwort erstellt wird.
|
protected Object |
syncObj
Spezielles Objekt zur Synchronisiserung.
|
protected static long |
t_lsMax
Maximale Dauer, um die der Loeschschutz automatisch verlaengert wird (gemessn ab Ende Vorhaltezeitraum)
|
protected byte[] |
tempMem
Speicher fuer das Abfragen der Indexe.
|
resultData, taskMgr
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListeners
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
Constructor and Description |
---|
QueryTask(ArchiveManager archiveMgr,
MultiTaskManager tMgr)
Konstruktor fuer den QueryTask.
|
Modifier and Type | Method and Description |
---|---|
protected void |
createQueryData()
Legt alle Datenstrukturen an, die zu Beginn der Anfrage ermittelt werden koennen.
|
void |
dataRequest(SystemObject object,
DataDescription dataDescription,
byte state)
Sendesteuerung des Datenverteilers an die Applikation.
|
static void |
getObjectsFromDAV(ClientDavInterface davCon)
In dieser Methode werden alle notwendigen Objekte von DAV geladen.
|
protected void |
init()
Initialisiert den Task fuer eine neue Anfrage.
|
boolean |
isRequestSupported(SystemObject object,
DataDescription dataDescription)
Diese Methode muss von der Applikation implementiert werden, um zu signalisieren, ob Sendesteuerungen erwünscht sind und mit der Methode
dataRequest verarbeitet werden. |
protected ArchiveDataSpecification[] |
parseArchiveDataSpec(Deserializer ds)
Interpretiert die empfangene Archivanfrage oder Archiv-Informationsanfrage und zerlegt sie in einzelne Unterabfragen vom Typ ArchiveDataSpecification.
|
protected void |
sendResultData(byte[] resultBytes,
int msgType)
Sendet das uebergebene Byte-Array in einem Ergebnis-Datensatz (
ResultData ) an das Empfaenger-Applikations-Objekt. |
static void |
setT_lsMax(long tlsMax) |
protected void |
subscribeSender()
Meldet den Task als Sender fuer Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt an.
|
protected void |
unsubscribeSender()
Meldet den Task als Sender fuer Archiv-Antworten an das angegebene Empfaenger-Applikations-Objekt ab.
|
doWork, getTaskIndex, run, setTaskIndex, work
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask
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
protected static ArchiveDataKind OA
protected static ArchiveDataKind ON
protected static ArchiveDataKind NA
protected static ArchiveDataKind NN
public static final int MIN_CONTAINER_FILES
protected QueryTask.SendingState sendingState
protected Object syncObj
protected byte[] tempMem
protected SystemObject queryAppObj
protected static AttributeGroup atgQuery
protected static DataDescription ddResponse
protected int queryIdx
protected int serializerVersion
protected Data gData
protected ResultData gResultData
protected ByteArrayOutputStream bosResult
protected Serializer serializer
protected Deserializer deserializer
protected static long t_lsMax
public QueryTask(ArchiveManager archiveMgr, MultiTaskManager tMgr)
archiveMgr
- Der Archiv-Manager.tMgr
- Der MultiTaskManager.protected void init()
public static void getObjectsFromDAV(ClientDavInterface davCon) throws ConfigurationException
davCon
- Verbindung zum DatenverteilerConfigurationException
public static void setT_lsMax(long tlsMax)
t_lsMax
public boolean isRequestSupported(SystemObject object, DataDescription dataDescription)
de.bsvrz.dav.daf.main.ClientSenderInterface
dataRequest
verarbeitet werden. In der Implementierung dieser Methode dürfen keine synchronen Aufrufe, die auf Telegramme vom Datenverteiler
warten (wie z.B. Konfigurationsanfragen) durchgeführt werden, da ansonsten ein Deadlock entsteht.isRequestSupported
in interface ClientSenderInterface
object
- Das in der zugehörigen Sendeanmeldung angegebene System-Objekt.dataDescription
- Die in der zugehörigen Sendeanmeldung angegebenen beschreibenden Informationen der angemeldeten Daten.true
, falls Sendesteuerungen gewünscht sind, sonst false
.ClientSenderInterface.isRequestSupported(SystemObject,DataDescription)
public void dataRequest(SystemObject object, DataDescription dataDescription, byte state)
de.bsvrz.dav.daf.main.ClientSenderInterface
dataRequest
in interface ClientSenderInterface
object
- 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 subscribeSender() throws ConfigurationException, OneSubscriptionPerSendData
receiver
- Empfaenger-Applikations-ObjektOneSubscriptionPerSendData
ConfigurationException
protected void unsubscribeSender()
protected void createQueryData() throws NoSuchVersionException
NoSuchVersionException
protected void sendResultData(byte[] resultBytes, int msgType)
ResultData
) an das Empfaenger-Applikations-Objekt.resultBytes
- Zu versendendes Byte-ArraymsgType
- ArchivNachrichtenTyp wie definiert in MessageType
protected ArchiveDataSpecification[] parseArchiveDataSpec(Deserializer ds) throws IOException
ds
- Deserialisierer mit der Anfrage.IOException