[
https://issues.apache.org/jira/browse/GERONIMO-3615?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12549147
]
Sangjin Lee commented on GERONIMO-3615:
---------------------------------------
I have a patch ready that addresses this issue and also GERONIMO-3616.
Essentially the sendRequest() method is modified to return a ResponseFuture
instead of void. In addition, an overloaded version of sendRequest() is created
to take an additional argument of BlockingQueue<ResponseFuture>. The queue will
serve as a completion queue on which a ResponseFuture object will be added as
the request is complete.
The semantics is entirely analogous to a familiar
java.util.concurrent.CompletionService, although I thought creating a concrete
CompletionService implementation was an overkill.
I have also created a test class that exercises the new method.
I'll be uploading the patch...
> AsyncHttpClient.sendRequest() should return a future
> ----------------------------------------------------
>
> Key: GERONIMO-3615
> URL: https://issues.apache.org/jira/browse/GERONIMO-3615
> Project: Geronimo
> Issue Type: New Feature
> Security Level: public(Regular issues)
> Components: AsyncHttpClient
> Affects Versions: 1.x
> Reporter: Sangjin Lee
> Attachments: patch.zip
>
>
> Currently the caller gets notified when the I/O is completed via
> AsyncHttpClientCallback. While this works for many use cases, there may be
> situations where sendRequest() returning a future would lead to a much more
> straightforward programming model. This will become much more powerful
> especially if one initiates requests to multiple URLs at once.
> I would request that sendRequest() return a future object on which one can
> query the status of the operation, and also obtain the result or an error
> case (exception or timeout) by calling methods on the future. It is
> desirable to have the return type implement java.util.concurrent.Future.
> Furthermore, the implementation class of the Future could retain the
> reference to the callback. Then one can have a consolidated and coherent
> mechanism of completion (callbacks firing as a result of future completion).
> In other words, the suggestion is to change the return type of sendRequest()
> from void to java.util.concurrent.Future<HttpResponseMessage>.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.