[
https://issues.apache.org/jira/browse/HTTPCORE-148?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sam Berlin updated HTTPCORE-148:
--------------------------------
Attachment: changes.txt
Alright -- suppose that'd be dreaming to hope implementations do it right. :)
Your approach should work fine. I spent a little time working a different
approach (one that we heavily use in LimeWire's NIO layer) that exposes an
Executor to run events in the right I/O thread. I tried a few different
approaches to make it work in the httpnio architecture, and think this one
works very well. The end result is basically that IOSession & IOControl have a
new 'Executor getIOExecutor' method, from which Runnables can be submitted.
AbstractIOReactor has an internal Executor that it passes to IOSessionImpl and
the events are added/polled from a Queue.
It lets all kinds of interesting things happen, without needing to maintain
state. For example, this Trigger problem could be implemented by saying:
Trigger {
submitResponse(HttpResponse response) {
conn.getIOExecutor().execute(new Runnable() {
public void run() {
submitResponse(request, response);
}
});
}
}
Eventually, if you find a need, things can get even fancier by exposing a
ScheduledExecutorService & using a DelayQueue internally. (We do this for all
kinds of things, like buffering outgoing data for a short period of time, to
reduce the number of outgoing TCP packets.)
> Create AsyncNHttpServiceHandler & AsyncNHttpClientHandler
> ---------------------------------------------------------
>
> Key: HTTPCORE-148
> URL: https://issues.apache.org/jira/browse/HTTPCORE-148
> Project: HttpComponents HttpCore
> Issue Type: New Feature
> Components: HttpCore NIO
> Affects Versions: 4.0-beta1
> Reporter: Sam Berlin
> Assignee: Oleg Kalnichevski
> Fix For: 4.0-beta2
>
> Attachments: changes.txt, changes.txt, changes.txt, changes2.txt
>
>
> Attached is a patch for AsyncNHttpServiceHandler. It actually works (as
> tested by running & hitting it with IE.) :)
> To test, run the example 'AsyncNHttpFileServer' in the examples directory or
> the TestAsyncNHttpHandlers test.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]