Looking through the Mina code it seems that the lastIoTime in AbstractPollingIoProcessor is only updated when messageSent is fired. This is causing me some problems when sending larger files (using FileRegion) to slow clients, sessionIdle is fired even though the IoProcessor continues to send data to the client. My first thought was to use IoSession.getScheduledWriteMessages > 0 my handlers sessionIdle() method to determine if the session was truly idle. But this doesn't seem to solve the problem because I'm not sure how to tell if data is actually being written to the client because writtenBytes is also only update when messageSent if fired. So I'm wondering if anyone has a clever solution to this problem or whether the semantics of idle notifications might be changed.
-geoff