avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Baldassari (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AVRO-539) Allow asynchronous clients to specify a callback to be run when server processing completes
Date Fri, 03 Jun 2011 21:40:48 GMT

    [ https://issues.apache.org/jira/browse/AVRO-539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13044074#comment-13044074
] 

James Baldassari commented on AVRO-539:
---------------------------------------

That is an interesting idea, Scott.  I think it's a good option for a couple of reasons. 
We don't have to return a Future with every RPC call, which is likely to be ignored in most
cases.  It also makes the generated interfaces cleaner and less confusing for someone trying
to figure out how to use it for the first time.

We would need to make a minor change to ProtocolFuture to override handleError(Exception e)
and throw that Exception inside get() if an error is returned by the callback.  Also, ProtocolFuture
could simply wrap a CallFuture<T>.  Something like this:

{code}
public class ProtocolFuture<T> implements Future<T>, Callback<T> {
  private final CallFuture<T> future = new CallFuture<T>();

  @Override
  public final void handleResult(T result) {
    future.setResponse(result);
  }

  @Override
  public final void handleError(Exception e) {
    future.setError(e);
  }

  @Override
  public final T get() throws InterruptedException, ExecutionException {
    return future.get();
  }

  @Override
  public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException,
TimeoutException {
    return future.get(timeout, unit);
  }
}
{code}

After thinking about it for a bit, I really like this approach.  The interface is clean, and
you can still use either Callbacks or Futures.  Any other opinions?

> Allow asynchronous clients to specify a callback to be run when server processing completes
> -------------------------------------------------------------------------------------------
>
>                 Key: AVRO-539
>                 URL: https://issues.apache.org/jira/browse/AVRO-539
>             Project: Avro
>          Issue Type: New Feature
>            Reporter: Jeff Hammerbacher
>         Attachments: AVRO-539.patch
>
>


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message