if (handler != null) {
IoHandlerExecutor executor = getService().getIoHandlerExecutor();
if (executor != null) {
// asynchronous event
executor.execute(new IdleEvent(this, status));
} else {
// synchronous call (in the I/O loop)
handler.sessionIdle(this, status);
}
}