Package org.apache.avro.ipc

# Class CallFuture<T>

java.lang.Object
org.apache.avro.ipc.CallFuture<T>

All Implemented Interfaces:
  `Future<T>`, `Callback<T>`

public class CallFuture<T> extends Object implements Future<T>, Callback<T>
A Future implementation for RPCs.

## Constructor Summary

Constructors
Constructor
Description
`CallFuture()`
Creates a CallFuture.
`CallFuture(Callback<T> chainedCallback)`
Creates a CallFuture with a chained Callback which will be invoked when this CallFuture's Callback methods are invoked.

## Method Summary

Modifier and Type
Method
Description
`void`
`await()`
Waits for the CallFuture to complete without returning the result.
`void`
`await(long timeout, TimeUnit unit)`
Waits for the CallFuture to complete without returning the result.
`boolean`
`cancel(boolean mayInterruptIfRunning)`
`T`
`get()`
`T`
`get(long timeout, TimeUnit unit)`
`Throwable`
`getError()`
Gets the error that was thrown during RPC execution.
`T`
`getResult()`
Gets the value of the RPC result without blocking.
`void`
`handleError(Throwable error)`
Sets an error thrown during RPC execution, and unblocks all threads waiting on `get()` or `get(long, TimeUnit)`.
`void`
`handleResult(T result)`
Sets the RPC response, and unblocks all threads waiting on `get()` or `get(long, TimeUnit)`.
`boolean`
`isCancelled()`
`boolean`
`isDone()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### CallFuture

public CallFuture()
Creates a CallFuture.

### CallFuture

public CallFuture(Callback<T> chainedCallback)
Creates a CallFuture with a chained Callback which will be invoked when this CallFuture's Callback methods are invoked.

Parameters:
  `chainedCallback` - the chained Callback to set.

## Method Details

### handleResult

public void handleResult(T result)
Sets the RPC response, and unblocks all threads waiting on `get()` or `get(long, TimeUnit)`.

Specified by:
  `handleResult` in interface `Callback<T>`
Parameters:
  `result` - the RPC result to set.

### handleError

public void handleError(Throwable error)
Sets an error thrown during RPC execution, and unblocks all threads waiting on `get()` or `get(long, TimeUnit)`.

Specified by:
  `handleError` in interface `Callback<T>`
Parameters:
  `error` - the RPC error to set.

### getResult

public T getResult()
Gets the value of the RPC result without blocking. Using `get()` or `get(long, TimeUnit)` is usually preferred because these methods block until the result is available or an error occurs.

Returns:
  the value of the response, or null if no result was returned or the RPC has not yet completed.

### getError

public Throwable getError()
Gets the error that was thrown during RPC execution. Does not block. Either `get()` or `get(long, TimeUnit)` should be called first because these methods block until the RPC has completed.

Returns:
  the RPC error that was thrown, or null if no error has occurred or if the RPC has not yet completed.

### cancel

public boolean cancel(boolean mayInterruptIfRunning)

Specified by:
  `cancel` in interface `Future<T>`

### isCancelled

public boolean isCancelled()

Specified by:
  `isCancelled` in interface `Future<T>`

### get

public T get() throws InterruptedException, ExecutionException

Specified by:
  `get` in interface `Future<T>`
Throws:
  `InterruptedException`
  `ExecutionException`

### get

public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException

Specified by:
  `get` in interface `Future<T>`
Throws:
  `InterruptedException`
  `ExecutionException`
  `TimeoutException`

### await

public void await() throws InterruptedException
Waits for the CallFuture to complete without returning the result.

Throws:
  `InterruptedException` - if interrupted.

### await

public void await(long timeout, TimeUnit unit) throws InterruptedException, TimeoutException
Waits for the CallFuture to complete without returning the result.

Parameters:
  `timeout` - the maximum time to wait.
  `unit` - the time unit of the timeout argument.
Throws:
  `InterruptedException` - if interrupted.
  `TimeoutException` - if the wait timed out.

### isDone

public boolean isDone()

Specified by:
  `isDone` in interface `Future<T>`