[ 
https://issues.apache.org/jira/browse/HTTPCORE-480?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16110883#comment-16110883
 ] 

silver9886 commented on HTTPCORE-480:
-------------------------------------

the new idea is this(i upload the diff png) :
add a protected class MinHoldTime default value is 0.
if( (currentTime - this.lastTimeoutCheck) >= this.timeoutCheckInterval + 
minholdTime.get()) {
if (keys != null) {
for (final SelectionKey key : keys)
{ timeoutCheck(key, currentTime,minholdTime); }
}
}
in the timeoutCheck,we can get the min sockettimeout is all sessions and change 
the minholdTime.get() return value.
protected void timeoutCheck(final SelectionKey key, final long now, final 
MinHoldTime minHoldTime) {
final IOSessionImpl session = (IOSessionImpl) key.attachment();
if (session != null) {
final int timeout = session.getSocketTimeout();
if (minHoldTime.get() == 0 || minHoldTime.get() > timeout )
{ minHoldTime.set(timeout); }
if (timeout > 0) {
if (session.getLastAccessTime() + timeout < now)
{ sessionTimedOut(session); }
}
}
}

> improve the code in check timeout
> ---------------------------------
>
>                 Key: HTTPCORE-480
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-480
>             Project: HttpComponents HttpCore
>          Issue Type: Improvement
>          Components: HttpCore NIO
>    Affects Versions: 4.4.6
>            Reporter: silver9886
>            Priority: Minor
>             Fix For: 4.4.7
>
>         Attachments: AbstractIOReactor-change.png, BaseIOReactor-add 
> class.png, BaseIOReactor-change.png
>
>
> change the code in org.apache.http.impl.nio.reactor.BaseIOReactor:
>         if( (currentTime - this.lastTimeoutCheck) >= 
> this.timeoutCheckInterval) ->
>    if( (currentTime - this.lastTimeoutCheck) >= this.timeoutCheckInterval + 2)
> because :the code will run for a time and network tranport expend the time 
> too.  So currentTime - this.lastTimeoutCheck should be 
> larger than selectTimeout in order to check timeout. In this case , This will 
> make the code more efficiency.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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

Reply via email to