Package de.bsvrz.ars.ars.mgmt
Class ArchivConfig
java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
de.bsvrz.ars.ars.mgmt.tasks.QueueTask<de.bsvrz.ars.ars.mgmt.ArchivConfig.SubscrMarker>
de.bsvrz.ars.ars.mgmt.ArchivConfig
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.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ArchivConfig.EndOfParamListener
Spezielle Klasse, mit der man auf das Ende der Übernahme der nächsten Archiveinstellungen warten kann. -
Field Summary
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
TERMINATE_TASK
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
_debug, _shouldTerminate, archMgr, didTree, persMgr
-
Constructor Summary
Constructors Constructor Description ArchivConfig(ArchiveManager aMgr)
-
Method Summary
Modifier and Type Method Description ArchivConfig.EndOfParamListener
createEndOfParamListener()
Erzeugt einen Listener der benachrichtigt wird, wenn ein Parametrierungszyklus durchlaufen ist.long
getPermanentDeleteTimeSeconds(DataIdentNode dataIdentNode)
Bestimmt die zusätzliche Vorhaltezeit für das endgültige Löschen für die angegebene Datenidentifikation.void
join()
Wartet auf das Beenden des Tasks nach der Terminierung.void
printArchiveParams(java.io.File dumpFile)
Gibt die Parametrierung auf dem übergebenen Stream aus.void
restartSubscribeArchiveParams()
Startet die Übernahme der Archivparametrierung und meldet die zu archivierenden Datenidentifikation an.void
setSimConfigQueue(java.util.concurrent.BlockingQueue<java.lang.Object> queue)
void
startSubscribeArchiveParams(InQueuesMgr iqMgr, DataIdentTree dTree)
Initialisiert den Thread und startet durchrestartSubscribeArchiveParams()
die Übernahme der Archivparametrierung.void
terminateTask()
Terminiert den Task.void
unsubscribeArchiveData()
Meldet alle zu archivierenden Daten abvoid
unsubscribeArchiveDataAck()
Meldet alle Quittierungsaspekte ab.void
unsubscribeArchiveParams()
Beendet den SettingsManager und meldet die Parametrierung des Archivsystems ab.void
unsubsrcibeSimVarData(int simVar)
Meldet alle zu einer Simulation gehoerenden Daten (= zu archivierende Daten + Quittungen) ab.protected void
work(de.bsvrz.ars.ars.mgmt.ArchivConfig.SubscrMarker step)
Vom konkreten Task zu implementierende Methode, die den Auftrag abarbeitetMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
execute
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
addTaskStepListener, cleanUp, getName, getState, isAlive, isTerminated, removeTaskStepListener, setName, start, taskStepDone
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
getArchMgr, getObjectsFromDav, shouldTerminate, suspendTaskIfNecessary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
ArchivConfig
-
-
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.InterruptedExceptionDescription copied from class:QueueTask
Vom konkreten Task zu implementierende Methode, die den Auftrag abarbeitet -
getPermanentDeleteTimeSeconds
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 derQueueTask.step()
-Methode aufgeweckt wird, falls die Methode dort gerade auf einen neuen Auftrag warten.- Overrides:
terminateTask
in classQueueTask<de.bsvrz.ars.ars.mgmt.ArchivConfig.SubscrMarker>
-
join
public void join() throws java.lang.InterruptedExceptionDescription 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
-
createEndOfParamListener
Erzeugt einen Listener der benachrichtigt wird, wenn ein Parametrierungszyklus durchlaufen ist.- Returns:
- Listener
-
startSubscribeArchiveParams
Initialisiert den Thread und startet durchrestartSubscribeArchiveParams()
die Übernahme der Archivparametrierung.- Parameters:
iqMgr
- Empfaenger der DatenanmeldungdTree
- 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 nachunsubscribeArchiveData()
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.InterruptedExceptionGibt die Parametrierung auf dem übergebenen Stream aus.- Parameters:
dumpFile
- Ausgabestream. Falls null, wird auf stdout ausgegeben- Throws:
java.lang.InterruptedException
- Thread unterbrochenjava.util.concurrent.TimeoutException
-