hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sam Berlin (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HTTPCORE-148) Create AsyncNHttpServiceHandler & AsyncNHttpClientHandler
Date Thu, 21 Feb 2008 21:55:19 GMT

    [ 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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message