Klasse ArchiveQueryTask

Alle implementierten Schnittstellen:
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.

  • Konstruktordetails

    • ArchiveQueryTask

      public ArchiveQueryTask(ArchiveManager archiveMgr, MultiTaskManager tMgr, FlowControlTask flowCtrl, int maximumRequestsPerApplication)
      Erzeugt einen neuen Query-Task.
      Parameter:
      archiveMgr - Archiv-Verwaltung
      tMgr - Zugeordneter Task-Manager
      flowCtrl - Verwaltung der Flusskontrolle
      maximumRequestsPerApplication - Maximale Anzahl von gleichzeitigen Anfragen pro Applikation
  • Methodendetails

    • subscribeObjects

      public static void subscribeObjects(ArchiveManager archMgr, InQueuesMgr.DataReceiver receiver)
      Fuehrt alle notwendigen Anmeldungen durch.
      Parameter:
      archMgr - Archiv-Verwaltung
      receiver - 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").
      Parameter:
      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").
      Parameter:
      bSMuxParam - Parametrierte PufferGröße des StreamMultiplexers
    • getBlockingFactorMux

      public static int getBlockingFactorMux()
      Siehe auch:
    • getBufferSizeMux

      public static int getBufferSizeMux()
      Siehe auch:
    • work

      public void work()
      Beschreibung aus Klasse kopiert: MultiTask
      Diese Methode ist zu überschreiben, um die konkrete Aufgabe der Task zu implementieren. In der Methode soll keine weitere Synchronisation stattfinden.
      Angegeben von:
      work in Klasse MultiTask
      Siehe auch:
    • dataRequest

      public void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)
      Angegeben von:
      dataRequest in Schnittstelle de.bsvrz.dav.daf.main.ClientSenderInterface
      Setzt außer Kraft:
      dataRequest in Klasse QueryTask
      Siehe auch:
      • ClientSenderInterface.dataRequest(SystemObject, DataDescription, byte)
    • terminateTask

      public void terminateTask()
      Beschreibung aus Klasse kopiert: 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 der QueueTask.step()-Methode aufgeweckt wird, falls die Methode dort gerade auf einen neuen Auftrag warten.
      Setzt außer Kraft:
      terminateTask in Klasse QueueTask<de.bsvrz.dav.daf.main.ResultData>
    • cleanUp

      protected void cleanUp()
      Beschreibung aus Klasse kopiert: AbstractTask
      Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde. Dieser Code wird im selben Thread ausgeführt, wie der eigentliche Task

      Tut standardmäßig nichts, kann überschrieben werden um Daten aufzuräumen, Abmeldungen durchzuführen usw.

      Setzt außer Kraft:
      cleanUp in Klasse AbstractTask
    • init

      protected void init()
      Initialisiert den Task für eine neue Archivanfrage.
      Setzt außer Kraft:
      init in Klasse QueryTask
    • 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.
      Setzt außer Kraft:
      unsubscribeSender in Klasse QueryTask