Skip to content

Instantly share code, notes, and snippets.

@paulosuzart
Created July 14, 2010 20:10
Show Gist options
  • Save paulosuzart/475986 to your computer and use it in GitHub Desktop.
Save paulosuzart/475986 to your computer and use it in GitHub Desktop.
public void start() throws Exception {
List<EventHandlerTask> h = new LinkedList<IOLoop.EventHandlerTask>();
while (true) {
Iterator<EventHandlerTask> iterTask = h.iterator();
System.out.println(h.size());
while (iterTask.hasNext()) {
pool.execute(iterTask.next());
iterTask.remove();
}
Iterator<Object[]> iterAddedHandlers = handlers.iterator();
boolean handleAdded = false;
Iterator<SelectionKey> iter = selector.selectedKeys().iterator();
while (iter.hasNext()) {
SelectionKey key = iter.next();
iter.remove();
if (key.isValid() && !key.isAcceptable()) {
EventHandlerTask task = new EventHandlerTask(
(EventHandler) key.attachment(), key.readyOps(),
key.channel());
this.removeHandler(key);
h.add(task);
} else if (key.isValid()) {
// events other than accept is handled in another thred.
((EventHandler) key.attachment()).handleEvents(
key.readyOps(), key.channel());
}
}
// Thread.sleep(IOLoop.SELECT_TIMEOUT);
if (h.isEmpty())
selector.select(SELECT_TIMEOUT);
else
selector.selectNow();
// if (selector.selectNow() == 0)
// continue;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment