Class 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.

  • Constructor Details

    • 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 Details

    • 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)
      Ü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 class MultiTask
      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 interface de.bsvrz.dav.daf.main.ClientSenderInterface
      Overrides:
      dataRequest in class QueryTask
      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 der QueueTask.step()-Methode aufgeweckt wird, falls die Methode dort gerade auf einen neuen Auftrag warten.
      Overrides:
      terminateTask in class QueueTask<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 Task

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

      Overrides:
      cleanUp in class Task
    • init

      protected void init()
      Initialisiert den Task für eine neue Archivanfrage.
      Overrides:
      init in class 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.
      Overrides:
      unsubscribeSender in class QueryTask