[
https://issues.apache.org/jira/browse/AVRO-585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12882207#action_12882207
]
Doug Cutting commented on AVRO-585:
-----------------------------------
Java Future's seem a good way to do this, Google's ListenableFuture in
particular.
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/util/concurrent/ListenableFuture.html
Here's a possible design:
Change Transceiver's primary method to:
ListenableFuture<List<ByteBuffer>> transceive(List<ByteBuffer>);
Change Responder's primary method to:
ListenableFuture<Object> respond(String messageName, Object parameters) throws
Exception;
Re-define the old, synchronous, version in terms of this.
Have the compiler emit a second interface for each protocol, something like:
public interface Test$Future FutureProtocol {
ListenableFuture<Utf8> echo(Utf8 greeting);
}
Add a method to SpecificRequestor to create a future-generating proxy with:
public FutureProtocol getFutureClient(Class<FutureClient>, Transceiver);
> add async RPC cllient
> ---------------------
>
> Key: AVRO-585
> URL: https://issues.apache.org/jira/browse/AVRO-585
> Project: Avro
> Issue Type: New Feature
> Components: java
> Reporter: Doug Cutting
>
> An async Java RPC client would be useful. It could, for example, send out a
> set of requests to be computed in parallel, then gather and combine the
> results as they are returned.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.