public class SimulationManager extends RepeatingTask implements MutableSetChangeListener
Diese Klasse reagiert auf Änderungen der Menge der Simulationsobjekte. Pro Simulationsobjekt wird eine Instanz von SimulationAutomaton erzeugt.
Wird das Archivsystem während einer Simulation heruntergefahren wird, so werden die bisher abgelegten Simulationsdaten nicht gelöscht. Dies geschieht dann entweder auf Anfrage oder wenn die Simulation erneut gestartet und in den Zustand ‘Vorstart’ gebracht wird.
| Modifier and Type | Field and Description |
|---|---|
private static Debug |
logger
Debug Ausgabe.
|
private MutableSet |
mutableSet
Objektmenge Simulationsobjekte.
|
private java.util.HashMap<SystemObject,SimulationAutomaton> |
simulations
Abbildung SystemObjekt Simulation -> Java Objekt Simulation
|
private RingBuffer<SimulationAutomaton> |
transitions
FIFO Puffer mit den Simulationen die Transitionen durchführen müssen.
|
private WakeUpManager |
wakeUp
Verwalten der Weckzeiten
|
private long |
wakeUpTime
Zeitraum in ms in dem eine erneute Steuerungsinformation für eine Simulation eingehen muss.
|
TERMINATE_TASK_debug, _shouldTerminate, archMgr, didTree, INDEX_MEMORY_SIZE, persMgr| Constructor and Description |
|---|
SimulationManager(ArchiveManager archMgr)
Meldet Objekt als Empfänger für Änderungen an
PidSimulation.objectSet an. |
| Modifier and Type | Method and Description |
|---|---|
void |
addTransition(SimulationAutomaton dfa)
Eine Transition soll durchgeführt werden.
|
void |
addWakeUp(SimulationAutomaton dfa)
Führt zum Aufrufen von
SimulationAutomaton.wakeUp() nach dem Ablauf von der parametrierbaren Wartezeit. |
void |
cancelWakeUp(SimulationAutomaton dfa)
Bricht das Aufwecken der übergebenen Simulation ab.
|
protected void |
cleanUp()
Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde, also die Step-Funktion das letzte mal ausgeführt wurde.
|
ClientDavInterface |
getDav() |
long |
getWakeUpTime()
Liefert den Zeitraum in ms in dem eine erneute Steuerungsinformation für eine Simulation eingehen muss.
|
void |
insertDeleteQuery(SimulationResultData ard)
Leitet einen Löschauftrag an den ArchiveManager weiter.
|
void |
setTimeOutPeriod(long timeout) |
void |
start() |
void |
step() |
void |
terminateTask()
Terminiert den Task, indem die
#run()-Methode unterbrochen wird, sofern sie im Wartezustand ist und nicht gerade einen Auftrag bearbeitet. |
void |
update(MutableSet set,
SystemObject[] addedObjects,
SystemObject[] removedObjects)
Methode, die nach Änderung einer Menge aufgerufen wird.
|
executeaddTaskStepListener, getArchMgr, getName, getObjectsFromDav, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, shouldTerminate, suspendTaskIfNecessary, taskStepDoneprivate MutableSet mutableSet
Objektmenge Simulationsobjekte.
private java.util.HashMap<SystemObject,SimulationAutomaton> simulations
Abbildung SystemObjekt Simulation -> Java Objekt Simulation
private RingBuffer<SimulationAutomaton> transitions
FIFO Puffer mit den Simulationen die Transitionen durchführen müssen.
private WakeUpManager wakeUp
Verwalten der Weckzeiten
private long wakeUpTime
Zeitraum in ms in dem eine erneute Steuerungsinformation für eine Simulation eingehen muss.
private static Debug logger
Debug Ausgabe.
public SimulationManager(ArchiveManager archMgr)
Meldet Objekt als Empfänger für Änderungen an PidSimulation.objectSet an.
archMgr - Archivmanagerpublic void update(MutableSet set, SystemObject[] addedObjects, SystemObject[] removedObjects)
de.bsvrz.dav.daf.main.config.MutableSetChangeListenerupdate in interface MutableSetChangeListenerset - Dynamische Menge die verändert wurde.addedObjects - Objekte, die in die Menge aufgenommen wurden. Falls keine Objekte aufgenommen wurden, wird ein leeres Array übergeben.removedObjects - Objekte, die aus der Menge entfernt wurden. Falls keine Objekte entfernt wurden, wird ein leeres Array übergeben.MutableSetChangeListener.update(MutableSet,SystemObject[],SystemObject[])public ClientDavInterface getDav()
public void addTransition(SimulationAutomaton dfa)
Eine Transition soll durchgeführt werden.
dfa - Simulationsobjekt, das eine Transition durchführen will.public void addWakeUp(SimulationAutomaton dfa)
Führt zum Aufrufen von SimulationAutomaton.wakeUp() nach dem Ablauf von der parametrierbaren Wartezeit.
dfa - Automat der benachrichtigt werden soll.public void cancelWakeUp(SimulationAutomaton dfa)
Bricht das Aufwecken der übergebenen Simulation ab.
dfa - Simulationpublic void step()
throws java.lang.InterruptedException
step in class RepeatingTaskjava.lang.InterruptedExceptionpublic void terminateTask()
TaskTerminiert 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 Taskprotected void cleanUp()
TaskWird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde, also die Step-Funktion das letzte mal ausgeführt wurde.
Tut standardmäßig nichts, kann überschrieben werden um Daten aufzuräumen, Abmeldungen durchzuführen usw.
public void insertDeleteQuery(SimulationResultData ard)
Leitet einen Löschauftrag an den ArchiveManager weiter.
ard - Auftragsparameterpublic long getWakeUpTime()
Liefert den Zeitraum in ms in dem eine erneute Steuerungsinformation für eine Simulation eingehen muss.
public void setTimeOutPeriod(long timeout)
timeout - Zeit in ms in der ein Steuerbefehl von der Simulationssteuerung kommen muss, nachdem diese einen ‘keine Quelle’ Datensatz gesendet hat.