|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.Thread
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.ArchivConfig
public class ArchivConfig
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.
Task
und RingBuffer
implementiert, da sie einen von der Kernsoftware zur Verfuegung
gestellten Mechanismus zur Parameteruebernahme verwendet.
Nested Class Summary | |
---|---|
class |
ArchivConfig.EndOfParamListener
Spezielle Klasse, mit der man auf das Ende der Übernahme der nächsten Archiveinstellungen warten kann. |
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. |
Nested classes/interfaces inherited from class java.lang.Thread |
---|
Thread.State, Thread.UncaughtExceptionHandler |
Field Summary | |
---|---|
private static String |
ARS_PARAM_ASP_PID
|
private static String |
ARS_PARAM_ATG_PID
|
private static String |
DEFAULT_PARAMS_FILE
|
private List<ArchivConfig.EndOfParamListener> |
endOfParamListeners
Listeners die benachrichtigt werden, wenn eine Parametrierung beendet ist. |
private EndOfSettingsListener |
eofSettingsLstnr
|
private boolean |
gotFirstPrintParam
|
private InQueuesMgr |
inQueuesMgr
|
private boolean |
isTerminated
|
private boolean |
noAnswer
|
private static long |
PARAM_TIMEOUT
Bei Ausgeben der Parametrierung wird diese Zeitspanne auf den Parameter-Datensatz gewartet |
private FileOutputStream |
paramDumpStream
|
private boolean |
paramsAvailable
|
private boolean |
printParams
|
private SettingsManager |
settingsMgr
|
private boolean |
shallTerminate
|
private RingBuffer<ResultData> |
simParamQueue
|
private ArchivConfig.SubscrMarker |
subscrMarker
|
private Object |
terminationMutex
|
private int |
totalDIDs
|
private UpdateListener |
updateSettingsLstnr
|
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task |
---|
archMgr, didTree, INDEX_MEMORY_SIZE, logger, persMgr, ringOfDeathListener, taskStepListeners |
Fields inherited from class java.lang.Thread |
---|
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
Constructor Summary | |
---|---|
ArchivConfig(ArchiveManager aMgr)
|
Method Summary | |
---|---|
private void |
closeParamDumpStream(FileOutputStream ds)
|
ArchivConfig.EndOfParamListener |
createEndOfParamListener()
Erzeugt einen Listener der benachrichtigt wird, wenn ein Parametrierungszyklus durchlaufen ist. |
private FileOutputStream |
createParamDumpStream(File dumpFile)
|
private SettingsManager |
createSettingsMgr()
|
private boolean |
getBool(Data data,
String key)
|
private void |
prepareNewParam(DataIdentification did,
Data newD)
Vermerkt einen DataIdentNode als neu parametriert. |
private void |
prepareReparam(DataIdentification did,
Data newD)
Vermerkt einen DataIdentNode als reparametriert. |
private void |
prepareUnparam(DataIdentification did)
Vermerkt einen DataIdentNode als nicht mehr parametriert. |
void |
printArchiveParams(File dumpFile)
Gibt die Parametrierung auf dem uebergebenen Stream aus. |
private void |
printParam(OutputStream dumpStream,
String separatorLine,
DataIdentification did,
Data data)
Schreibt die empfangene Parametrierung auf den übergebenen Ausgabestrom oder auf stdout. |
private void |
processParams()
|
private void |
processSimParams(ResultData rd)
Meldet Daten einer Simulation zum Archivieren (und Quittieren) an. |
private void |
processSubscriptions()
Diese Methode arbeitet den ArchivConfig.SubscrMarker ab, der in den Callback-Methoden des SettingsManager gefuellt wurde. |
void |
restartSubscribeArchiveParams()
Startet die Uebernahme der Archivparametrierung und meldet die zu archivierenden Datenidentifikation an. |
void |
run()
|
void |
setSimConfigQueue(RingBuffer<ResultData> queue)
|
void |
startSubscribeArchiveParams(InQueuesMgr iqMgr,
DataIdentTree dTree)
Initialisiert den Thread und startet durch restartSubscribeArchiveParams() die Uebernahme der Archivparametrierung. |
private String |
subscrAck(SystemObject so,
AttributeGroup atg,
Aspect asp,
int sv,
DataIdentNode din,
ArchivConfig.SubscrMarker sm)
Meldet die Quittungs an. |
private String |
unsubscrAck(SystemObject so,
AttributeGroup atg,
int sv,
long qAspId)
|
void |
unsubscribeArchiveData()
Meldet alle zu archivierenden Daten ab |
private void |
unsubscribeArchiveData(int simVar)
Meldet die zu archivierenden Daten der angegebenen Simulationsvariante ab. |
void |
unsubscribeArchiveDataAck()
Meldet alle Quittierungsaspekte ab. |
private void |
unsubscribeArchiveDataAck(int simVar)
Meldet die Quittierungsaspekte der genannte Simulationsvariante 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. |
void |
waitForTermination()
Beendet den ArchivConfig-Thread. |
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task |
---|
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask |
Methods inherited from class java.lang.Thread |
---|
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private static final String ARS_PARAM_ATG_PID
private static final String ARS_PARAM_ASP_PID
private static final String DEFAULT_PARAMS_FILE
private static final long PARAM_TIMEOUT
private boolean shallTerminate
private boolean isTerminated
private Object terminationMutex
private boolean paramsAvailable
private InQueuesMgr inQueuesMgr
private int totalDIDs
private SettingsManager settingsMgr
private EndOfSettingsListener eofSettingsLstnr
private UpdateListener updateSettingsLstnr
private ArchivConfig.SubscrMarker subscrMarker
private FileOutputStream paramDumpStream
private boolean printParams
private boolean noAnswer
private boolean gotFirstPrintParam
private RingBuffer<ResultData> simParamQueue
private List<ArchivConfig.EndOfParamListener> endOfParamListeners
Constructor Detail |
---|
public ArchivConfig(ArchiveManager aMgr) throws ConfigurationException
ConfigurationException
Method Detail |
---|
public void setSimConfigQueue(RingBuffer<ResultData> queue)
private SettingsManager createSettingsMgr() throws ConfigurationException
ConfigurationException
public void run()
run
in interface Runnable
run
in class Thread
private void processSimParams(ResultData rd)
rd
muss vom Typ SimulationResultData
sein, sonst wird keine
Anmeldung vorgenommen.
rd
- Spezifikation der anzumeldenden Daten. Muss vom Typ SimulationResultData
sein.private void processParams()
public void waitForTermination()
public ArchivConfig.EndOfParamListener createEndOfParamListener()
public void startSubscribeArchiveParams(InQueuesMgr iqMgr, DataIdentTree dTree) throws ConfigurationException
restartSubscribeArchiveParams()
die Uebernahme der Archivparametrierung.
iqMgr
- Empfaenger der DatenanmeldungdTree
- Baum, in den die Datenidentifikationen zusammen mit der Parametrierung eingetragen werden
ConfigurationException
public void restartSubscribeArchiveParams() throws ConfigurationException
ConfigurationException
public void unsubscribeArchiveParams()
private void unsubscribeArchiveData(int simVar)
simVar
- Simulationsvariante. Falls < 0 werden alle zu archivierenden Daten abgemeldetpublic void unsubscribeArchiveData()
public void unsubsrcibeSimVarData(int simVar)
private void unsubscribeArchiveDataAck(int simVar)
unsubscribeArchiveData()
geschehen, damit die Datensaetze,
die noch in der Queue sind, nach der Archivierung quittiert werden koennen.
public void unsubscribeArchiveDataAck()
unsubscribeArchiveData()
geschehen, damit die Datensaetze, die noch in der Queue sind, nach
der Archivierung quittiert werden koennen.
public void printArchiveParams(File dumpFile) throws Exception
dumpFile
- Ausgabestream. Falls null, wird auf stdout ausgegeben
ConfigurationException
InterruptedException
Exception
private FileOutputStream createParamDumpStream(File dumpFile)
private void closeParamDumpStream(FileOutputStream ds)
private String unsubscrAck(SystemObject so, AttributeGroup atg, int sv, long qAspId)
private String subscrAck(SystemObject so, AttributeGroup atg, Aspect asp, int sv, DataIdentNode din, ArchivConfig.SubscrMarker sm)
so
- Systemobjektatg
- Attributgruppesv
- SimVardin
- DataIdentnode
private void processSubscriptions()
ArchivConfig.SubscrMarker
ab, der in den Callback-Methoden des SettingsManager
gefuellt wurde. Es werden gemaess
Parametrierung alle An- und Abmeldungen fuer die Datensaetze als auch fuer die Quittungen durchgefuehrt. Die DataIdentNode
s wurden bereits mit der
aktuellen Parametrierung besetzt.
private void prepareReparam(DataIdentification did, Data newD)
did
- DataIdentNodenewD
- Neue Parameterdatenprivate void prepareNewParam(DataIdentification did, Data newD)
processParams()
angelegt. D.h. sobald dort das erste Datum angemeldet wird, kann es archiviert werden.
did
- DatenidentifikationnewD
- Neue Parameterdatenprivate void prepareUnparam(DataIdentification did)
did
- Datenidentifikationprivate void printParam(OutputStream dumpStream, String separatorLine, DataIdentification did, Data data)
dumpStream
- Ausgabestrom. Falls null, wird auf stdout geschrieben.separatorLine
- Zeile, die zwischen Datensätzen eingefügt wird (\n wird angehängt).did
- Datenidentifikationdata
- Parametrierungprivate boolean getBool(Data data, String key)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |