Class ArchivConfig

java.lang.Object

public class ArchivConfig
extends QueueTask<de.bsvrz.ars.ars.mgmt.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-Mechnanismus 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 als einzige nicht mit Hilfe 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​(java.util.concurrent.BlockingQueue<java.lang.Object> queue)
    • work

      protected void work​(de.bsvrz.ars.ars.mgmt.ArchivConfig.SubscrMarker step) throws java.lang.InterruptedException
      Description copied from class: QueueTask
      Vom konkreten Task zu implementierende Methode, die den Auftrag abarbeitet
      Specified by:
      work in class QueueTask<de.bsvrz.ars.ars.mgmt.ArchivConfig.SubscrMarker>
      Parameters:
      step - Auftrag/Arbeitsschritt
      Throws:
      java.lang.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<de.bsvrz.ars.ars.mgmt.ArchivConfig.SubscrMarker>
    • join

      public void join() throws java.lang.InterruptedException
      Description copied from class: Task
      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 Task
      Throws:
      java.lang.InterruptedException - bei Unterbrechung
      See Also:
      Thread.join()
    • 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
    • unsubsrcibeSimVarData

      public void unsubsrcibeSimVarData​(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​(java.io.File dumpFile) throws java.util.concurrent.TimeoutException, java.lang.InterruptedException
      Gibt die Parametrierung auf dem übergebenen Stream aus.
      Parameters:
      dumpFile - Ausgabestream. Falls null, wird auf stdout ausgegeben
      Throws:
      java.lang.InterruptedException - Thread unterbrochen
      java.util.concurrent.TimeoutException