Class ArchivConfig


public class ArchivConfig extends QueueTask<ArchivConfig.SubscrMarker>
Konfiguration des Archivsystems. Die Klasse ist als Thread implementiert, damit die Anmeldungen nicht im Thread des Datenverteilers (in den Callback-Methoden des SettingsManager) laufen müssen. Stattdessen wird ein einfacher Ping-Pong-Mechanismus implementiert, mit dem die Parameter abgearbeitet werden, sobald der EndOfSettingsListener aufgerufen wurde. Das Ende eines Parametrierungszyklus kann durch createEndOfParamListener() abgewartet werden.

In einem Parametrierungszyklus werden alle An-/Abmeldungen von zu archivierenden Datenidentifikationen und Quittierungs-Datenidentifikationen vorgenommen.

Diese Klasse ist nicht mithilfe von RepeatingTask und RingBuffer implementiert, da sie einen von der Kernsoftware zur Verfuegung gestellten Mechanismus zur Parameterübernahme verwendet.

  • Constructor Details

  • Method Details

    • setSimConfigQueue

      public void setSimConfigQueue(SignalingQueue<de.bsvrz.dav.daf.main.ResultData> queue)
    • work

      protected void work(ArchivConfig.SubscrMarker step) throws InterruptedException
      Description copied from class: QueueTask
      Vom konkreten Task zu implementierende Methode, die den Auftrag abarbeitet. Diese Methode sollte nur Intern aufgerufen werden, ist für Testfälle aber public. Normalerweise sollten Aufträge aber Asynchron mit submit() übergeben werden
      Specified by:
      work in class QueueTask<ArchivConfig.SubscrMarker>
      Parameters:
      step - Auftrag/Arbeitsschritt
      Throws:
      InterruptedException - Thread unterbrochen
    • getPermanentDeleteTimeSeconds

      public long getPermanentDeleteTimeSeconds(DataIdentNode dataIdentNode)
      Bestimmt die zusätzliche Vorhaltezeit für das endgültige Löschen für die angegebene Datenidentifikation.
      Parameters:
      dataIdentNode - DataIdentNode der Datenidentifikation
      Returns:
      zusätzliche Vorhaltezeit in Sekunden (> 0). -1 falls nicht endgültig gelöscht werden soll. 0 und andere negative Werte werden nicht zurückgegeben.
    • 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<ArchivConfig.SubscrMarker>
    • join

      public void join() throws InterruptedException
      Description copied from class: AbstractTask
      Wartet auf das Beenden des Tasks nach der Terminierung. Beispielcode:
      
       task.terminateTask(); // Task soll bei der nächsten Möglichkeit terminieren (asynchroner Aufruf)
       task.join(); // Auf das terminieren synchron warten
       
      Overrides:
      join in class AbstractTask
      Throws:
      InterruptedException - bei Unterbrechung
      See Also:
    • createEndOfParamListener

      public ArchivConfig.EndOfParamListener createEndOfParamListener()
      Erzeugt einen Listener der benachrichtigt wird, wenn ein Parametrierungszyklus durchlaufen ist.
      Returns:
      Listener
    • startSubscribeArchiveParams

      public void startSubscribeArchiveParams(InQueuesMgr iqMgr, DataIdentTree dTree)
      Initialisiert den Thread und startet durch restartSubscribeArchiveParams() die Übernahme der Archivparametrierung.
      Parameters:
      iqMgr - Empfaenger der Datenanmeldung
      dTree - Baum, in den die Datenidentifikationen zusammen mit der Parametrierung eingetragen werden
    • restartSubscribeArchiveParams

      public void restartSubscribeArchiveParams()
      Startet die Übernahme der Archivparametrierung und meldet die zu archivierenden Datenidentifikation an. Diese Methode wird auch nach einem Verbindungsabbruch zum DAV aufgerufen.
    • unsubscribeArchiveParams

      public void unsubscribeArchiveParams()
      Beendet den SettingsManager und meldet die Parametrierung des Archivsystems ab.
    • unsubscribeArchiveData

      public void unsubscribeArchiveData()
      Meldet alle zu archivierenden Daten ab
    • unsubscribeSimVarData

      public void unsubscribeSimVarData(int simVar)
      Meldet alle zu einer Simulation gehoerenden Daten (= zu archivierende Daten + Quittungen) ab. Da es nicht auf einfache Weise möglich ist, festzustellen, wann keine Datensätze einer bestimmten SimVar mehr in der Archiv-Queue sind, kann man nicht bis dahin warten, bevor die Quittungen abgemeldet werden. Es kann also sein, dass einige Datensätze der Simulation nicht mehr quittiert werden.
    • unsubscribeArchiveDataAck

      public void unsubscribeArchiveDataAck()
      Meldet alle Quittierungsaspekte ab. Dies muss nach unsubscribeArchiveData() geschehen, damit die Datensätze, die noch in der Queue sind, nach der Archivierung quittiert werden können.
    • printArchiveParams

      public void printArchiveParams(File dumpFile) throws TimeoutException, InterruptedException
      Gibt die Parametrierung auf dem übergebenen Stream aus.
      Parameters:
      dumpFile - Ausgabestream. Falls null, wird auf stdout ausgegeben
      Throws:
      InterruptedException - Thread unterbrochen
      TimeoutException