Interface ApiStreamObserver<V> (2.45.0)

public interface ApiStreamObserver<V>

Receives notifications from an observable stream of messages.

It is used for sending messages in bidi (bidirectional) or client-streaming calls, or for receiving messages in bidi or server-streaming calls.

For outgoing messages, an ApiStreamObserver is provided by GAX to the application, and the application then provides the messages to send. For incoming messages, the application implements the ApiStreamObserver and passes it to GAX, which then calls the observer with the messages for the application to receive them.

Implementations are expected to be thread-compatible. Separate ApiStreamObservers do not need to be synchronized together; incoming and outgoing directions are independent. Since individual ApiStreamObservers are not thread-safe, if multiple threads will be writing to a ApiStreamObserver concurrently, the application must synchronize calls.

This interface is a fork of io.grpc.stub.StreamObserver to enable shadowing of Guava, and also to allow for a transport-agnostic interface that doesn't depend on gRPC.

Type Parameter

NameDescription
V

Methods

onCompleted()

public abstract void onCompleted()

Receives a notification of successful stream completion.

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 onCompleted, no further calls to any method are allowed.

onError(Throwable t)

public abstract void onError(Throwable t)

Receives a terminating error from the stream.

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.

Parameter
NameDescription
tThrowable

the error occurred on the stream

onNext(V value)

public abstract void onNext(V value)

Receives a value from the stream.

Can be called many times but is never called after #onError(Throwable) or #onCompleted() are called.

Clients may invoke onNext at most once for server streaming calls, but may receive many onNext callbacks. Servers may invoke onNext at most once for client streaming calls, but may receive many onNext callbacks.

If an exception is thrown by an implementation the caller is expected to terminate the stream by calling #onError(Throwable) with the caught exception prior to propagating it.

Parameter
NameDescription
valueV

the value passed to the stream