de.bsvrz.dav.daf.main.impl
Class SimulationTime

java.lang.Object
  extended by de.bsvrz.dav.daf.main.impl.SimulationTime

public class SimulationTime
extends Object

Klasse zum Zugriff auf den Zeitfluß einer Simulation. Nach dem Erzeugen eines Objekts dieser Klasse kann mit der Methode getTime() auf die simulierte Zeit der jeweiligen Simulation zugegriffen werden und mit den Methoden sleep(long) und sleepUntil(long) kann der aufrufende Thread für eine bestimmte Zeit im Zeitfluß der Simulation blockiert werden. Die Methode close() sollte aufgerufen werden, wenn das Objekt zum Zugriff auf den Zeitfluß einer Simulation nicht mehr benötigt wird.

Author:
Kappich Systemberatung

Nested Class Summary
private  class SimulationTime.InternalReceiver
           
 
Field Summary
private  ClientDavConnection _connection
           
private  SimulationTime.InternalReceiver _internalReceiver
           
private  boolean _onlineModus
           
private  Aspect _simAspect
           
private  AttributeGroup _simAttributeGroup
           
private  SystemObject _simObject
           
private  short _simulationVariant
           
private  long _time
           
private  Integer _timeNotification
           
 
Constructor Summary
SimulationTime(short simulationVariant, ClientDavConnection connection)
          Erzeugt ein neues Objekt zum Zugriff auf den Zeitfluß einer bestimmten Simulation.
 
Method Summary
 void close()
          Terminiert dieses Objekt und veranlasst bei einer Offline-Simulation die notwendige Abmeldung der Simulationszeiten.
 long getTime()
          Bestimmt die Zeit einer Simulation.
 void sleep(long timeToSleep)
          Blockiert den aufrufenden Thread für die spezifizierte Zeit.
 void sleepUntil(long absoluteTime)
          Blockiert den aufrufenden Thread bis die spezifizierte Zeit erreicht ist.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_simulationVariant

private short _simulationVariant

_connection

private ClientDavConnection _connection

_onlineModus

private boolean _onlineModus

_simObject

private SystemObject _simObject

_simAttributeGroup

private AttributeGroup _simAttributeGroup

_simAspect

private Aspect _simAspect

_time

private long _time

_timeNotification

private final Integer _timeNotification

_internalReceiver

private SimulationTime.InternalReceiver _internalReceiver
Constructor Detail

SimulationTime

public SimulationTime(short simulationVariant,
                      ClientDavConnection connection)
               throws ConfigurationException
Erzeugt ein neues Objekt zum Zugriff auf den Zeitfluß einer bestimmten Simulation. Im Falle einer Offline-Simulation findet eine Anmeldung auf die Simulationszeit der entsprechenden Simulationsvariante statt, die vom Simulationsdatengenerator zur Verfügung gestellt wird.

Parameters:
simulationVariant - Simulationsvariante der zu betrachtenden Simulation.
connection - Datenverteilerverbindung über die die Kommunikation mit dem Simulationsdatengenerator durchgeführt wird.
Throws:
ConfigurationException - Wenn bei der Kommunikation mit der Konfiguration Fehler aufgetreten sind.
Method Detail

getTime

public final long getTime()
Bestimmt die Zeit einer Simulation. Bei einer Online-Simulation wird die aktuelle Zeit zurückgegeben und bei einer Offline-Simulation die simulierte Zeit.

Returns:
Zeitpunkt in Millisekunden seit 1970.
Throws:
IllegalStateException - Wenn der simulierte Zeitfluss im Falle einer Offline-Simulation nicht bestimmt werden kann.
See Also:
ClientDavInterface.getTime()

sleep

public final void sleep(long timeToSleep)
Blockiert den aufrufenden Thread für die spezifizierte Zeit. Die angegebene Dauer der Pause wird im Falle einer Online-Simulation in Realzeit und im Falle einer Offline-Simulation im Zeitfluss der Simulation berücksichtigt.

Parameters:
timeToSleep - Wartezeit in Millisekunden seit 1970.
Throws:
IllegalStateException - Wenn der simulierte Zeitfluss im Falle einer Offline-Simulation nicht bestimmt werden kann.
See Also:
ClientDavInterface.sleep(long)

sleepUntil

public final void sleepUntil(long absoluteTime)
Blockiert den aufrufenden Thread bis die spezifizierte Zeit erreicht ist. Der angegebene Zeitpunkt wird im Falle einer Online-Simulation in Realzeit und im Falle einer Offline-Simulation im Zeitfluss der Simulation berücksichtigt.

Parameters:
absoluteTime - Abzuwartender Zeitpunkt in Millisekunden seit 1970.
Throws:
IllegalStateException - Wenn der simulierte Zeitfluss im Falle einer Offline-Simulation nicht bestimmt werden kann.
See Also:
ClientDavInterface.sleepUntil(long)

close

public final void close()
                 throws ConfigurationException
Terminiert dieses Objekt und veranlasst bei einer Offline-Simulation die notwendige Abmeldung der Simulationszeiten.

Throws:
ConfigurationException - Wenn bei der Kommunikation mit der Konfiguration Fehler aufgetreten sind.