in proton-j/src/main/java/org/apache/qpid/proton/reactor/impl/IOHandler.java [361:407]
public void onUnhandled(Event event) {
try {
ReactorImpl reactor = (ReactorImpl)event.getReactor();
Selector selector = reactor.getSelector();
if (selector == null) {
selector = new SelectorImpl(reactor.getIO());
reactor.setSelector(selector);
}
Selectable selectable;
switch(event.getType()) {
case SELECTABLE_INIT:
selectable = event.getSelectable();
selector.add(selectable);
break;
case SELECTABLE_UPDATED:
selectable = event.getSelectable();
selector.update(selectable);
break;
case SELECTABLE_FINAL:
selectable = event.getSelectable();
selector.remove(selectable);
selectable.release();
break;
case CONNECTION_LOCAL_OPEN:
handleOpen(reactor, event);
break;
case CONNECTION_BOUND:
handleBound(reactor, event);
break;
case TRANSPORT:
handleTransport(reactor, event);
break;
case TRANSPORT_CLOSED:
event.getTransport().unbind();
break;
case REACTOR_QUIESCED:
handleQuiesced(reactor, selector);
break;
default:
break;
}
} catch(IOException ioException) {
// XXX: Might not be the right exception type, but at least the exception isn't being swallowed
throw new ReactorInternalException(ioException);
}
}