@BetaApi(value="The surface for streaming is not stable yet and may change in the future.")
public interface ResponseObserver<V>
The application is responsible for implementing the ResponseObserver and passing it to
GAX, which then calls the observer with the messages for the application to receive them. The
methods might be called by different threads, but are guaranteed to happen sequentially. The
order of callbacks is guaranteed to be:
By default, the stream uses automatic flow control, where the next response will be delivered
as soon as the current one is processed by onResponse. A consumer can disable automatic flow
control by calling disableAutoInboundFlowControl() in onStart. After this, the
consumer must request responses by calling request().
| Modifier and Type | Method and Description |
|---|---|
void |
onComplete()
Receives a notification of successful stream completion.
|
void |
onError(Throwable t)
Receives a terminating error from the stream.
|
void |
onResponse(V response)
Receives a value from the stream.
|
void |
onStart(StreamController controller)
Called before the stream is started.
|
void onStart(StreamController controller)
ServerStreamingCallable.call(Object, ResponseObserver, ApiCallContext)
Allows for disabling flow control and early stream termination via StreamController.
controller - The controller for the stream.void onResponse(V response)
Can be called many times but is never called after onError(Throwable) or onComplete() are called.
Clients may may receive 0 or more onResponse callbacks.
If an exception is thrown by an implementation the caller will terminate the stream by
calling onError(Throwable) with the caught exception as the cause.
response - the value passed to the streamvoid onError(Throwable t)
May only be called once, and if called, it must be the last method called. In particular, if
an exception is thrown by an implementation of onError, no further calls to any method
are allowed.
t - the error occurred on the streamvoid onComplete()
May only be called once, and if called, it must be the last method called. In particular, if
an exception is thrown by an implementation of onComplete, no further calls to any
method are allowed.