hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Asankha C. Perera" <asan...@apache.org>
Subject Re: Differentiating Connection Timeouts and Closes
Date Mon, 16 Jan 2012 10:37:27 GMT
Hi Oleg
> Timeout event fired by an I/O reactor simply signals the fact that there
> has been no activity on that I/O session for the given timeout period.
> The I/O session itself remains in a perfectly valid state. It is up to
> individual protocol handlers to decide what is to be done with that
> session. The default implementations simply close the timed out session
> but it does not have to be that way.
> As far as closed I/O sessions are concerned, if closed by the opposite
> end, the I/O session can still be read from as long as there is pending
> data. Once all input has been received read operations on that session
> will start returning -1 indicating the connection is being in a
> half-closed state. It is still up to individual protocol handlers to
> decide what is to be done with the session. Closing it on the local end
> is the most natural choice.
> Both cases are quite easy to distinguish. Hope this answers your
> question.
Thanks for the detailed reply.. So from an EventListener implementation, 
checking "conn.getMetrics().getReceivedBytesCount()" etc should tell me 
if this connection has any bytes we've already read/received. My plan is 
to reset the connection metrics after each request, and thus use the 
above to detect any partial read on a timed out/closed connection.


Asankha C. Perera
AdroitLogic, http://adroitlogic.org


To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message