public void startSimulation() { Message m; while (!queue.isEmpty() && simTime < simulationEndTime) { m = queue.getNextMessage(); if (m != null) { simTime = m.getMessageArrivalTime(); m.processEvent(); m.handleMessage(); } printLog(); } }
@Override // let enter the car into the road immediatly public void handleMessage() { Road road = (Road) this.getReceivingUnit(); road.incrementPromisedToEnterRoad(); // this will be decremented in // enter road road.setTimeOfLastEnteringVehicle(getMessageArrivalTime()); road.removeFirstDeadlockPreventionMessage(this); road.removeFromInterestedInEnteringRoad(); vehicle.scheduleEnterRoadMessage(getMessageArrivalTime(), road); }
@Override public void handleMessage() { // enter the next road Road road = Road.getRoad(vehicle.getCurrentLinkId()); road.enterRoad(vehicle, getMessageArrivalTime()); }
public void testMessageFactory1(){ MessageFactory.GC_ALL_MESSAGES(); JDEQSimConfigGroup.setGC_MESSAGES(true); MessageFactory.disposeEndLegMessage(new EndLegMessage(null,null)); MessageFactory.disposeEnterRoadMessage(new EnterRoadMessage(null,null)); MessageFactory.disposeStartingLegMessage(new StartingLegMessage(null,null)); MessageFactory.disposeLeaveRoadMessage(new LeaveRoadMessage(null,null)); MessageFactory.disposeEndRoadMessage(new EndRoadMessage(null,null)); MessageFactory.disposeDeadlockPreventionMessage(new DeadlockPreventionMessage(null,null)); assertEquals(0, MessageFactory.getEndLegMessageQueue().size()); assertEquals(0, MessageFactory.getEnterRoadMessageQueue().size()); assertEquals(0, MessageFactory.getStartingLegMessageQueue().size()); assertEquals(0, MessageFactory.getLeaveRoadMessageQueue().size()); assertEquals(0, MessageFactory.getEndRoadMessageQueue().size()); assertEquals(0, MessageFactory.getEndLegMessageQueue().size()); }
public void testPutMessage2(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(2); Message m2=new DummyMessage(); m2.setMessageArrivalTime(1); mq.putMessage(m1); mq.putMessage(m2); assertEquals(2, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m2); }
public void sendMessage(Message m, SimUnit targetUnit, double messageArrivalTime) { m.setSendingUnit(this); m.setReceivingUnit(targetUnit); m.setMessageArrivalTime(messageArrivalTime); scheduler.schedule(m); }
private void scheduleEndLegMessage(double time) { // move to first link in next leg and schedule an end leg message vehicle.moveToFirstLinkInNextLeg(); Road road = Road.getRoad(vehicle.getCurrentLinkId()); vehicle.scheduleEndLegMessage(time, road); }
/** * updates both the currentLink and link index variables with the next link * in the link route of the current leg attention: only applicable, if * isCurrentLegFinished==false */ public void moveToNextLinkInLeg() { setLinkIndex(getLinkIndex() + 1); setCurrentLinkId(getCurrentLinkRoute()[getLinkIndex()]); }
@Override public void handleMessage() { Road road = (Road) this.getReceivingUnit(); road.leaveRoad(vehicle, getMessageArrivalTime()); }
public DeadlockPreventionMessage scheduleDeadlockPreventionMessage(double scheduleTime, Road road) { DeadlockPreventionMessage dpMessage = MessageFactory.getDeadlockPreventionMessage(road.scheduler, this); sendMessage(dpMessage, road, scheduleTime); return dpMessage; }
public void scheduleLeaveRoadMessage(double scheduleTime, Road road) { sendMessage(MessageFactory.getLeaveRoadMessage(road.scheduler, this), road, scheduleTime); }
protected void _scheduleEnterRoadMessage(double scheduleTime, Road road) { sendMessage(MessageFactory.getEnterRoadMessage(road.scheduler, this), road, scheduleTime); }
public void scheduleEndRoadMessage(double scheduleTime, Road road) { sendMessage(MessageFactory.getEndRoadMessage(road.scheduler, this), road, scheduleTime); }
public void scheduleEndLegMessage(double scheduleTime, Road road) { sendMessage(MessageFactory.getEndLegMessage(road.scheduler, this), road, scheduleTime); }
public void scheduleStartingLegMessage(double scheduleTime, Road road) { sendMessage(MessageFactory.getStartingLegMessage(road.scheduler, this), road, scheduleTime); }
/** * find out, if the vehicle is in endingLegMode this means, that the vehicle * is just waiting until it can enter the last link (without entering it) * and then ends the leg * * @return */ public boolean isEndingLegMode() { return (getCurrentLinkRoute().length == getLinkIndex()); }
public void testMessageFactory2(){ MessageFactory.GC_ALL_MESSAGES(); JDEQSimConfigGroup.setGC_MESSAGES(false); MessageFactory.disposeEndLegMessage(new EndLegMessage(null,null)); MessageFactory.disposeEnterRoadMessage(new EnterRoadMessage(null,null)); MessageFactory.disposeStartingLegMessage(new StartingLegMessage(null,null)); MessageFactory.disposeLeaveRoadMessage(new LeaveRoadMessage(null,null)); MessageFactory.disposeEndRoadMessage(new EndRoadMessage(null,null)); MessageFactory.disposeDeadlockPreventionMessage(new DeadlockPreventionMessage(null,null)); assertEquals(1, MessageFactory.getEndLegMessageQueue().size()); assertEquals(1, MessageFactory.getEnterRoadMessageQueue().size()); assertEquals(1, MessageFactory.getStartingLegMessageQueue().size()); assertEquals(1, MessageFactory.getLeaveRoadMessageQueue().size()); assertEquals(1, MessageFactory.getEndRoadMessageQueue().size()); assertEquals(1, MessageFactory.getEndLegMessageQueue().size()); }
public void testPutMessage1(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); assertEquals(2, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m1); }
public void testRemoveMessage1(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); mq.removeMessage(m1); assertEquals(1, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m2); assertEquals(0, mq.getQueueSize()); }
public void testRemoveMessage2(){ MessageQueue mq=new MessageQueue(); Message m1=new DummyMessage(); m1.setMessageArrivalTime(1); Message m2=new DummyMessage(); m2.setMessageArrivalTime(2); mq.putMessage(m1); mq.putMessage(m2); mq.removeMessage(m2); assertEquals(1, mq.getQueueSize()); assertEquals(true, mq.getNextMessage()==m1); assertEquals(0, mq.getQueueSize()); }