[ https://issues.apache.org/jira/browse/HTTPCORE-148?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12571198#action_12571198 ]
Sam Berlin commented on HTTPCORE-148: ------------------------------------- Would it be possible to leave thread-safety requirements to implementations that spawn new threads? It's very possible for implementations to only perform actions on the same thread. For example, consider the case of a proxy server that takes the request & internally performs a non-blocking request to another host, sending that host's response back. If the proxy is using the Async handler, it's highly likely that it fully supports non-blocking I/O and is doing that request on the same non-blocking I/O thread, which would cause the response to be triggered on the same thread too. In our scenario, where we plug in our own NIO layer, the implementation we'd use would do something like: void handle(...) { assert isDispatchThread(); new Thread() { public void run() { byte[] data = getResponseFromAnotherRequest(); runInDispatchThread(new Runnable() { public void run() { response.setEntity(new NByteArrayEntity(data)); trigger.submitResponse(response); } } } }.start(); } We can even add assertions that implementations using the trigger follow the thread-safety by passing the current thread to the Trigger's creation, and asserting that Thread.currentThread() == createdThread in the submit methods. This would let the trigger be used in a thread-safe manner, while still allowing implementations to delay sending a response. > 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, 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]