@@ -35,6 +35,7 @@ class SimulationScheduler {
3535 private final SimulationProcessor _simulationProcessor ;
3636 private final Logger _logger = LogManager .getLogger (SimulationScheduler .class );
3737 private long _curSimulationTime ;
38+ private Date _simulationStartTime ;
3839 private boolean _isActive ;
3940
4041
@@ -60,8 +61,8 @@ public Thread newThread(Runnable r) {
6061 }
6162 }
6263
63- // -------------- public methods ----------------
64- public SimulationStep runSimulation (SimulationStepArgs runSimulationEventArgs ) {
64+ // -------------- package private methods ----------------
65+ SimulationStep runSimulation (SimulationStepArgs runSimulationEventArgs ) {
6566 _logger .info ("Received run simulation event with args: " + runSimulationEventArgs .getCurSimulationTime () + " iterationSize: " + runSimulationEventArgs .getIterationSize () + " flags: " + runSimulationEventArgs .getSimulationFlags () );
6667 long current = System .currentTimeMillis ();
6768 SimulationStep ret ;
@@ -73,12 +74,17 @@ public SimulationStep runSimulation(SimulationStepArgs runSimulationEventArgs) {
7374 worker .shutdown ();
7475 }
7576 return new SimulationStep (SimulationStatus .UserRequested ,_curSimulationTime );
77+ } if (runSimulationEventArgs .getSimulationFlags () == WorkbenchSimulationFlags .Start ) {
78+ _logger .info ("Starting simulation; initializing instances." );
79+ for (SimulationWorker worker : _workers ) {
80+ worker .initSimulation (new Date (runSimulationEventArgs .getCurSimulationTime ()));
81+ }
82+ return new SimulationStep (SimulationStatus .Running ,_curSimulationTime );
7683 } else {
7784 ret = runSimulationStep (runSimulationEventArgs );
7885 }
7986
8087 _logger .info (String .format ("runSim complete in %s ms... returning next: %s" , (System .currentTimeMillis ()-current ), ret ));
81- _logger .info (String .format ("Queued: %s Processed: %s Sent: %s" , QUEUED .getAndSet (0 ), PROCESSED .getAndSet (0 ), SENT .getAndSet (0 )));
8288 return ret ;
8389 }
8490
@@ -93,6 +99,16 @@ void setStatus(boolean active) {
9399 _isActive = active ;
94100 }
95101
102+ Date getSimulationStartTime () {
103+ return _simulationStartTime ;
104+ }
105+
106+ void setSimulationStartTime (Date simulationStartTime ) {
107+ _simulationStartTime = simulationStartTime ;
108+ }
109+
110+
111+
96112 // -------------- private methods ----------------
97113 private SimulationStep runSimulationStep (SimulationStepArgs args ) {
98114 long currentTimeMs = System .currentTimeMillis ();
0 commit comments