modhelxs.simulation
Class SynchronizingRTClock

java.lang.Object
  extended by tesl.Clock<T>
      extended by modhelxs.simulation.DrivingClock<java.lang.Long>
          extended by modhelxs.simulation.SynchronizingRTClock

public class SynchronizingRTClock
extends DrivingClock<java.lang.Long>

A driving clock that ticks on real time. If you put a tick on this clock, it will become "now" at the time of its tag.

Author:
boulange

Nested Class Summary
private  class SynchronizingRTClock.ClockBackup
           
private  class SynchronizingRTClock.SynchronizingRTThread
          The thread used to notify the execution engine when a tick is produced on the clock.
 
Field Summary
private  SynchronizingRTClock.SynchronizingRTThread mythread_
           
private  long offset_
           
 
Fields inherited from class modhelxs.simulation.DrivingClock
listener_
 
Constructor Summary
SynchronizingRTClock(java.lang.String name)
           
 
Method Summary
 void activate()
          Activate the clock: make it ready to produce a tick and notify the engine.
 void adjustTime(long delta)
          Adjust the reference time when missing real time dead lines.
 ClockBackupInterface<java.lang.Long> backup()
           
 void cancel()
          Cancel the clock: stop waiting for the driving event.
 java.lang.Long getNextTime()
          Compute the time for the next tick.
 long getRealTime()
           
 Tick<java.lang.Long> newTick()
          This clock should have only one tick, so we can't add new ones.
 void removeTick(int i)
          This clock manages its tick by itself, so we cannot remove them.
 void removeTick(Tick<java.lang.Long> tick)
          This clock manages its tick by itself, so we cannot remove them.
 void resetClock()
          Reset the now attribute and the tag of the unique tick of this clock.
 void restore(ClockBackupInterface<java.lang.Long> backup)
          This clock should have only one tick, so it cannot be restored.
 void wrapup()
          Release the ressources used by the clock, called at the end of the simulation.
 
Methods inherited from class modhelxs.simulation.DrivingClock
getDrivingClocks, setListener
 
Methods inherited from class tesl.Clock
affineTags, cleanUp, createMasterImplication, createSlaveImplication, filteredImplies, getClockSet, getFirstTaggedTick, getFloatingTick, getName, getNowTick, getNumberOfTicks, getTag, getTagCalculus, getTagValue, getTick, getTick, getTick, getTicks, hasFloatingTick, hasTaggedTick, hasTickNow, hasTicks, implies, impliesThroughFilter, impliesWithDelay, impliesWithDelay, isGreedy, isNow, newTick, sameTags, setClockSet, setGreedy, setNow, setTag, setTagValue, sustains, sustains, tagDifference, tagProduct, tagQuotient, tagSum, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

mythread_

private SynchronizingRTClock.SynchronizingRTThread mythread_

offset_

private long offset_
Constructor Detail

SynchronizingRTClock

public SynchronizingRTClock(java.lang.String name)
Method Detail

getRealTime

public long getRealTime()

getNextTime

public java.lang.Long getNextTime()
Compute the time for the next tick. If this time is is the past, add as many periods as necessary to bring it in the future.


adjustTime

public void adjustTime(long delta)
Adjust the reference time when missing real time dead lines.


activate

public void activate()
Description copied from class: DrivingClock
Activate the clock: make it ready to produce a tick and notify the engine.

Specified by:
activate in class DrivingClock<java.lang.Long>

cancel

public void cancel()
Description copied from class: DrivingClock
Cancel the clock: stop waiting for the driving event.

Specified by:
cancel in class DrivingClock<java.lang.Long>

newTick

public Tick<java.lang.Long> newTick()
This clock should have only one tick, so we can't add new ones.

Overrides:
newTick in class Clock<java.lang.Long>

backup

public ClockBackupInterface<java.lang.Long> backup()
Overrides:
backup in class Clock<java.lang.Long>

restore

public void restore(ClockBackupInterface<java.lang.Long> backup)
This clock should have only one tick, so it cannot be restored.

Overrides:
restore in class Clock<java.lang.Long>

removeTick

public void removeTick(Tick<java.lang.Long> tick)
This clock manages its tick by itself, so we cannot remove them.

Overrides:
removeTick in class Clock<java.lang.Long>

removeTick

public void removeTick(int i)
This clock manages its tick by itself, so we cannot remove them.

Overrides:
removeTick in class Clock<java.lang.Long>

resetClock

public void resetClock()
Reset the now attribute and the tag of the unique tick of this clock.

Overrides:
resetClock in class Clock<java.lang.Long>

wrapup

public void wrapup()
Description copied from class: DrivingClock
Release the ressources used by the clock, called at the end of the simulation.

Specified by:
wrapup in class DrivingClock<java.lang.Long>