public class ArchivConfig extends QueueTask<ArchivConfig.Notification>
Konfiguration des Archivsystems. Die Klasse ist als Thread implementiert, damit die Anmeldungen nicht im Thread des Datenverteilers (in den Callback-Methoden des SettingsManager) laufen muessen. 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 Parameteruebernahme verwendet.
Modifier and Type | Class and Description |
---|---|
class |
ArchivConfig.EndOfParamListener
Spezielle Klasse, mit der man auf das Ende der Übernahme der nächsten Archiveinstellungen warten kann.
|
static class |
ArchivConfig.Notification |
static class |
ArchivConfig.SubscrMarker
Mit dieser Klasse wird während der Parameterübernahme in den Callback-Methoden vermerkt für welche Datenidentifikation (=
DataIdentNode ) was parametriert wurde. |
TERMINATE_TASK
_debug, _shouldTerminate, archMgr, didTree, INDEX_MEMORY_SIZE, persMgr
Constructor and Description |
---|
ArchivConfig(ArchiveManager aMgr) |
Modifier and Type | Method and Description |
---|---|
ArchivConfig.EndOfParamListener |
createEndOfParamListener()
Erzeugt einen Listener der benachrichtigt wird, wenn ein Parametrierungszyklus durchlaufen ist.
|
void |
join()
Wartet auf das Beenden des Threads nach der Terminierung.
|
void |
printArchiveParams(java.io.File dumpFile)
Gibt die Parametrierung auf dem uebergebenen Stream aus.
|
void |
restartSubscribeArchiveParams()
Startet die Uebernahme 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 durch
restartSubscribeArchiveParams() die Uebernahme der Archivparametrierung. |
void |
terminateTask()
Terminiert den Task, indem die
#run() -Methode unterbrochen wird, sofern sie im Wartezustand ist und nicht gerade einen Auftrag bearbeitet. |
void |
unsubscribeArchiveData()
Meldet alle zu archivierenden Daten ab
|
void |
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(ArchivConfig.Notification step) |
execute
addTaskStepListener, cleanUp, getArchMgr, getName, getObjectsFromDav, getState, isAlive, isTerminated, removeTaskStepListener, setName, shouldTerminate, start, suspendTaskIfNecessary, taskStepDone
public ArchivConfig(ArchiveManager aMgr)
public void setSimConfigQueue(java.util.concurrent.BlockingQueue<java.lang.Object> queue)
protected void work(ArchivConfig.Notification step) throws java.lang.InterruptedException
work
in class QueueTask<ArchivConfig.Notification>
java.lang.InterruptedException
public void terminateTask()
QueueTask
Terminiert den Task, indem die #run()
-Methode unterbrochen wird, sofern sie im Wartezustand ist und nicht gerade einen Auftrag bearbeitet. Andernfalls wird der Task vor dem naechsten Zyklus beendet.
terminateTask
in class QueueTask<ArchivConfig.Notification>
public void join() throws java.lang.InterruptedException
Task
Wartet auf das Beenden des Threads nach der Terminierung.
public ArchivConfig.EndOfParamListener createEndOfParamListener()
Erzeugt einen Listener der benachrichtigt wird, wenn ein Parametrierungszyklus durchlaufen ist.
public void startSubscribeArchiveParams(InQueuesMgr iqMgr, DataIdentTree dTree)
Initialisiert den Thread und startet durch restartSubscribeArchiveParams()
die Uebernahme der Archivparametrierung.
iqMgr
- Empfaenger der DatenanmeldungdTree
- Baum, in den die Datenidentifikationen zusammen mit der Parametrierung eingetragen werdenpublic void restartSubscribeArchiveParams()
Startet die Uebernahme der Archivparametrierung und meldet die zu archivierenden Datenidentifikation an. Diese Methode wird auch nach einem Verbindungsabbruch zum DAV aufgerufen.
public void unsubscribeArchiveParams()
Beendet den SettingsManager und meldet die Parametrierung des Archivsystems ab.
public void unsubscribeArchiveData()
Meldet alle zu archivierenden Daten ab
public void unsubsrcibeSimVarData(int simVar)
Meldet alle zu einer Simulation gehoerenden Daten (= zu archivierende Daten + Quittungen) ab. Da es nicht auf einfache Weise moeglich 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.
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 koennen.
public void printArchiveParams(java.io.File dumpFile) throws java.lang.Exception
Gibt die Parametrierung auf dem uebergebenen Stream aus.
dumpFile
- Ausgabestream. Falls null, wird auf stdout ausgegebenjava.lang.InterruptedException
java.lang.Exception