OnTheFlyServer(Scenario scenario, EventsManager events, VisMobsim qSim, NonPlanAgentQueryHelper nonPlanAgentQueryHelper) { this.scenario = scenario; this.events = events; this.visMobsim = qSim; this.nonPlanAgentQueryHelper = nonPlanAgentQueryHelper; playPauseSimulationControl = new PlayPauseSimulationControl(qSim); }
@Override public void doStep(int time) { playPauseSimulationControl.doStep(time); }
@Override public int getLocalTime() { return (int) playPauseSimulationControl.getLocalTime(); }
playPause = new PlayPauseSimulationControl( qSim ) ; playPause.pause();
@Override public boolean isFinished() { return playPauseSimulationControl.isFinished(); }
@Override public void play() { playPauseSimulationControl.play(); }
@Override public void pause() { playPauseSimulationControl.pause(); }
@Override public OTFQueryRemote answerQuery(AbstractQuery query) { try { playPauseSimulationControl.getAccess().acquire(); query.installQuery(currentTimeStepView); } catch (InterruptedException e) { throw new RuntimeException(e); } finally { playPauseSimulationControl.getAccess().release(); } activeQueries.add(query); return query; }
public final boolean isFinished() { return playPause.isFinished() ; }
@Override public void finish() { playPause.play(); while( matsimThread.isAlive() ) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }
@Override public byte[] getQuadConstStateBuffer() { try { playPauseSimulationControl.getAccess().acquire(); byte[] result; buf.position(0); quad.writeConstData(buf); int pos = buf.position(); result = new byte[pos]; buf.position(0); buf.get(result); return result; } catch (InterruptedException e) { throw new RuntimeException(e); } finally { playPauseSimulationControl.getAccess().release(); } }
@Override public final AgentDataContainer takeControl(double time, AgentDataContainer agentDataContainer){ runUntilV2( (int)(playPause.getLocalTime() + 1), agentDataContainer ) ; return adc; }
public final void runUntilV2( long newTime , AgentDataContainer inAdc) { log.trace("Received {} ", inAdc); agentManager.updateActions(inAdc, adc); playPause.doStep( (int) (newTime) ); }
@Override public byte[] getQuadDynStateBuffer(final QuadTree.Rect bounds) { try { playPauseSimulationControl.getAccess().acquire(); byte[] result; buf.position(0); quad.writeDynData(bounds, buf); int pos = buf.position(); result = new byte[pos]; buf.position(0); buf.get(result); return result; } catch (InterruptedException e) { throw new RuntimeException(e); } finally { playPauseSimulationControl.getAccess().release(); } }