Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class EventQueueManager implements Runnable {
- private volatile boolean isRunning;
- private final Logger logger;
- private final BroadcasterManager broadcasters;
- //private final EventExecutorService eventService;
- public EventQueueManager (BroadcasterManager broadcasters) {
- if (broadcasters == null)
- throw new IllegalArgumentException ("The broadcaster storage cannot be null.");
- this.broadcasters = broadcasters;
- this.isRunning = true;
- logger = LoggerFactory.getLogger(getClass());
- }
- /* (non-Javadoc)
- * @see java.lang.Runnable#run()
- */
- @Override
- public void run() {
- logger.debug("Plot Event Queue Manager STARTED.");
- Broadcaster b;
- Event event;
- String id;
- while (isRunning) {
- event = EventQueue.getEvent();
- if (event != null) {
- id = event.getDomain();
- b = broadcasters.get(id);
- if (b == null)
- //if the broadcaster does not exist, a STOP Subscription is sent
- SubscriptionEventQueue.addEvent(new SubscriptionEvent(Type.STOP,event.getDomain()));
- else if (b.getAtmosphereResources().size() == 0){
- //if the broadcaster haven't any resource, the broadcaster is removed.
- broadcasters.remove(id);
- }
- else {
- //otherwise use the retrieved broadcaster to broadcast the event
- b.broadcast(event);
- logger.debug("Broadcasting to " + b.getID() + ". " + event.toString());
- }
- }
- }
- logger.debug("Event Queue Manager STOPPED.");
- }
- public boolean isRunning () {
- return this.isRunning;
- }
- public void stop () {
- this.isRunning = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement