public void safeDispatchEvent(Event e) { dispatching.incrementAndGet(); final Set<Listener> targetListeners; synchronized (listeners) { checkCanDispatchEventType(e.getEventType()); targetListeners = ImmutableSet.copyOf(listeners.get(e.getEventType())); } for (final Listener l : targetListeners) { l.handleEvent(e); } dispatching.decrementAndGet(); update(); }
/** * Notifies this blackboard user of a change in the environment. */ public void update() { eventDispatcher .dispatchEvent(new Event(CommunicatorEventType.CHANGE, this)); }
void doHandleEvent(Event e) { synchronized (computingSimSolvers) { final boolean isComputingBefore = isComputing(); LOGGER.trace("receive: {}, computing: {}, clock is ticking: {}, {}", e, isComputingBefore, clock.isTicking(), computingSimSolvers); if (e.getEventType() == EventType.START_COMPUTING) { if (!isComputingBefore) { LOGGER.debug("start computing -> switch to real time"); clock.switchToRealTime(); } computingSimSolvers.add((RtSimSolverSchedulerBridge) e.getIssuer()); } else if (e.getEventType() == EventType.DONE_COMPUTING) { // done computing checkState(computingSimSolvers.remove(e.getIssuer())); // if (!isComputing()) { // stop(); // } } else { throw new IllegalArgumentException("Unexpected event: " + e); } } }
@Override public void handleEvent(Event e) { if (e.getEventType() == ClockEventType.STARTED) { startTimeReal = System.currentTimeMillis(); startTimeSim = clock.getCurrentTime(); computationTime = 0; } else if (e.getEventType() == ClockEventType.STOPPED) { computationTime = System.currentTimeMillis() - startTimeReal; simulationTime = clock.getCurrentTime() - startTimeSim; } else if (e.getEventType() == RoadEventType.MOVE) { verify(e instanceof MoveEvent); final MoveEvent me = (MoveEvent) e; clock.getCurrentTime()); if (totalVehicles == lastArrivalTimeAtDepot.size()) { eventDispatcher.dispatchEvent(new Event( StatsProvider.EventTypes.ALL_VEHICLES_AT_DEPOT, this)); } else if (e.getEventType() == PDPModelEventType.START_PICKUP) { verify(e instanceof PDPModelEvent); final PDPModelEvent pme = (PDPModelEvent) e; } else if (e.getEventType() == PDPModelEventType.END_PICKUP) { totalPickups++; } else if (e.getEventType() == PDPModelEventType.START_DELIVERY) { final PDPModelEvent pme = (PDPModelEvent) e; } else if (e.getEventType() == PDPModelEventType.END_DELIVERY) { totalDeliveries++;
@Override public void handleEvent(Event e) { history.add(e); e.toString(); }
@Override public void handleEvent(Event e) { if (e.getEventType() == ClockEventType.STARTED) { startTimeReal = System.currentTimeMillis(); startTimeSim = clock.getCurrentTime(); computationTime = 0; } else if (e.getEventType() == ClockEventType.STOPPED) { computationTime = System.currentTimeMillis() - startTimeReal; simulationTime = clock.getCurrentTime() - startTimeSim; } else if (e.getEventType() == RoadEventType.MOVE) { verify(e instanceof MoveEvent); final MoveEvent me = (MoveEvent) e; clock.getCurrentTime()); if (totalVehicles == lastArrivalTimeAtDepot.size()) { eventDispatcher.dispatchEvent(new Event( StatsProvider.EventTypes.ALL_VEHICLES_AT_DEPOT, this)); } else if (e.getEventType() == PDPModelEventType.START_PICKUP) { verify(e instanceof PDPModelEvent); final PDPModelEvent pme = (PDPModelEvent) e; } else if (e.getEventType() == PDPModelEventType.END_PICKUP) { totalPickups++; } else if (e.getEventType() == PDPModelEventType.START_DELIVERY) { final PDPModelEvent pme = (PDPModelEvent) e; } else if (e.getEventType() == PDPModelEventType.END_DELIVERY) { totalDeliveries++;
public void safeDispatchEvent(Event e) { dispatching.incrementAndGet(); final Set<Listener> targetListeners; synchronized (listeners) { checkCanDispatchEventType(e.getEventType()); targetListeners = ImmutableSet.copyOf(listeners.get(e.getEventType())); } for (final Listener l : targetListeners) { l.handleEvent(e); } dispatching.decrementAndGet(); update(); }
@Override public void receiveParcel(Auctioneer<T> auctioneer, Parcel p, long auctionStartTime) { LOGGER.info("{} receiveParcel {}", this, p); assignedParcels.add(p); eventDispatcher .dispatchEvent(new Event(CommunicatorEventType.CHANGE, this)); }
@Test public void followPathEventIssuerType() { final MovingRoadUser user = new TestRoadUser(); model.addObjectAt(user, SW); final ListenerEventHistory list = new ListenerEventHistory(); model.getEventAPI().addListener(list, RoadEventType.MOVE); assertTrue(list.getHistory().isEmpty()); model.followPath(user, newLinkedList(asList(SW, SE, NE, NW)), TimeLapseFactory.create(0, 10)); assertEquals(1, list.getHistory().size()); assertEquals(RoadEventType.MOVE, list.getHistory().get(0).getEventType()); assertEquals(model, list.getHistory().get(0).getIssuer()); }
/** * Dispatch an event. Notifies all listeners that are listening for this type * of event. * @param e The event to be dispatched, only events with a supported type can * be dispatched. */ public void dispatchEvent(Event e) { synchronized (listeners) { dispatching.incrementAndGet(); checkCanDispatchEventType(e.getEventType()); for (final Listener l : listeners.get(e.getEventType())) { l.handleEvent(e); } dispatching.decrementAndGet(); } update(); }
protected void dispatchChangeEvent() { eventDispatcher.dispatchEvent( new Event(RoutePlannerEventType.CHANGE, this)); }
@Test public void moveToEventIssuerType() { final MovingRoadUser user = new TestRoadUser(); model.addObjectAt(user, SW); final ListenerEventHistory list = new ListenerEventHistory(); model.getEventAPI().addListener(list, RoadEventType.MOVE); assertTrue(list.getHistory().isEmpty()); model.moveTo(user, NW, TimeLapseFactory.create(0, 10)); assertEquals(1, list.getHistory().size()); assertEquals(RoadEventType.MOVE, list.getHistory().get(0).getEventType()); assertEquals(model, list.getHistory().get(0).getIssuer()); }
/** * Dispatch an event. Notifies all listeners that are listening for this type * of event. * @param e The event to be dispatched, only events with a supported type can * be dispatched. */ public void dispatchEvent(Event e) { synchronized (listeners) { dispatching.incrementAndGet(); checkCanDispatchEventType(e.getEventType()); for (final Listener l : listeners.get(e.getEventType())) { l.handleEvent(e); } dispatching.decrementAndGet(); } update(); }
@Override public void handleEvent(Event e) { if (e .getEventType() == ScenarioController.EventType.SCENARIO_FINISHED) { sim.stop(); } } });
@Override public boolean releaseParcel(Parcel p) { checkArgument(!pdpModel.get().getParcelState(p).isPickedUp() && !pdpModel.get().getParcelState(p).isTransitionState()); LOGGER.info("{} releaseParcel {}", this, p); checkArgument(assignedParcels.contains(p)); assignedParcels.remove(p); checkState(!assignedParcels.contains(p)); eventDispatcher .dispatchEvent(new Event(CommunicatorEventType.CHANGE, this)); return true; }
@Override public void handleEvent(Event e) { verify(e instanceof PDPModelEvent); final PDPModelEvent event = (PDPModelEvent) e; final Box box = (Box) verifyNotNull(event.parcel); if (e.getEventType() == PDPModelEventType.END_PICKUP) { occupiedPositions.remove(box.getPickupLocation()); } if (e.getEventType() == PDPModelEventType.END_DELIVERY) { final long duration = DoubleMath.roundToLong( FactoryExample.SERVICE_DURATION / 2d + rng.nextDouble() * FactoryExample.SERVICE_DURATION, RoundingMode.CEILING); simulator.get().unregister(box); final BoxHandle bh = box.boxHandle; bh.wordIndex = (bh.wordIndex + 1) % points.size(); final Point dest; if (bh.index >= points.get(bh.wordIndex).size()) { dest = rndBorder(); } else { dest = points.get(bh.wordIndex).get(bh.index); occupiedPositions.add(dest); } final Box newBox = new Box(box.getDeliveryLocation(), dest, duration, bh); bh.box = newBox; simulator.get().register(newBox); } }
void close() { if (!shell.isDisposed()) { display.asyncExec(new Runnable() { @Override public void run() { shell.close(); } }); } if (builder.callback().isPresent()) { builder.callback().get() .handleEvent(new Event(Clock.ClockEventType.STOPPED, null)); } }
@Override public void handleEvent(Event e) { verify(e instanceof PDPModelEvent); final PDPModelEvent event = (PDPModelEvent) e; final Box box = (Box) verifyNotNull(event.parcel); if (e.getEventType() == PDPModelEventType.END_PICKUP) { occupiedPositions.remove(box.getPickupLocation()); } if (e.getEventType() == PDPModelEventType.END_DELIVERY) { final long duration = DoubleMath.roundToLong( FactoryExample.SERVICE_DURATION / 2d + rng.nextDouble() * FactoryExample.SERVICE_DURATION, RoundingMode.CEILING); simulator.get().unregister(box); final BoxHandle bh = box.boxHandle; bh.wordIndex = (bh.wordIndex + 1) % points.size(); final Point dest; if (bh.index >= points.get(bh.wordIndex).size()) { dest = rndBorder(); } else { dest = points.get(bh.wordIndex).get(bh.index); occupiedPositions.add(dest); } final Box newBox = new Box(box.getDeliveryLocation(), dest, duration, bh); bh.box = newBox; simulator.get().register(newBox); } }