예제 #1
0
  public void update() {
    messenger.refreshEvents();
    final int filterSize = filters.size();
    if (filterSize > 0) {
      for (int i = 0; i < filterSize; ++i) {
        filters.get(i).filter(messenger, optimisedEvents);
      }
    } else {
      final ArrayList<Event<?>> events = messenger.getEvents();
      final int size = events.size();
      if (size > 0) {
        optimisedEvents.addAll(events);
      }
    }

    final int handlerSize = handlers.size();
    while (optimisedEvents.size() > 0) // Reduce chance of sending the same event twice.
    {
      final Event<?> event = optimisedEvents.get(0);
      optimisedEvents.remove(0);
      for (int j = 0; j < handlerSize; ++j) {
        handlers.get(j).processEvent(event);
      }
    }
  }