Package com.google.api.gax.rpc
Class BidiStreamingCallable<RequestT,ResponseT>
java.lang.Object
com.google.api.gax.rpc.BidiStreamingCallable<RequestT,ResponseT>
- Direct Known Subclasses:
TracedBidiCallable
A BidiStreamingCallable is an immutable object which is capable of making RPC calls to
bidirectional streaming API methods. Not all transports support streaming.
It is considered advanced usage for a user to create a BidiStreamingCallable themselves. This class is intended to be created by a generated client class, and configured by instances of StreamingCallSettings.Builder which are exposed through the client settings class.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionbidiStreamingCall
(ApiStreamObserver<ResponseT> responseObserver) Deprecated.bidiStreamingCall
(ApiStreamObserver<ResponseT> responseObserver, ApiCallContext context) Deprecated.Please usesplitCall(ResponseObserver, ApiCallContext)
instead.call()
Send requests and iterate over server responses.call
(ApiCallContext context) Send requests and iterate over server responses.void
call
(BidiStreamObserver<RequestT, ResponseT> bidiObserver) Listens to server responses and send requests when the network is free.void
call
(BidiStreamObserver<RequestT, ResponseT> bidiObserver, ApiCallContext context) Listens to server responses and send requests when the network is free.abstract ClientStream<RequestT>
internalCall
(ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext context) The "base" method from which other forms ofcall
s are derived.splitCall
(ResponseObserver<ResponseT> responseObserver) Send requests to the server and listens to responses.splitCall
(ResponseObserver<ResponseT> responseObserver, ApiCallContext context) Send requests to the server and listens to responses.withDefaultCallContext
(ApiCallContext defaultCallContext) Returns a newBidiStreamingCallable
with anApiCallContext
that is used as a default when none is supplied in individual calls.
-
Constructor Details
-
BidiStreamingCallable
protected BidiStreamingCallable()
-
-
Method Details
-
internalCall
public abstract ClientStream<RequestT> internalCall(ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext context) The "base" method from which other forms ofcall
s are derived. Most users will not need to call this method directly.However, it is
public
, since library authors might want to call this method in adaptor classes. -
call
Listens to server responses and send requests when the network is free. Example usage:final Iterator<Integer> sourceDataIterator = intCollection.iterator(); BidiStreamObserver<Integer, String> bidiStreamObserver = new BidiStreamObserver<Integer, String>() { public void onStart(StreamController controller) { // no-op } public void onResponse(String response) { System.out.println(response); } public void onComplete() { System.out.println("done!"); } public void onError(Throwable t) { System.out.println("error: " + t); } public void onReady(ClientStream<Integer> stream) { while (sourceDataIterator.hasNext()) { if (stream.isReady()) { stream.send(sourceDataIterator.next()); } else { // It's OK we haven't consumed the whole iterator; // onReady will be called again when the network becomes free. return; } } // We ran out of things to send. stream.close(); } }; bidiStreamingCallable.call(bidiStreamObserver);
-
call
Listens to server responses and send requests when the network is free. -
call
Send requests and iterate over server responses.This returns a live stream that must either be fully consumed or cancelled. Example usage:
BidiStream<String, String> stream = bidiStreamingCallable.call() for (String s : stream) { if ("needle".equals(s)) { // Cancelling the stream will cause `hasNext()` to return false on the next iteration, // naturally breaking the loop. stream.cancel(); } stream.send(s); }
-
call
Send requests and iterate over server responses.This returns a live stream that must either be fully consumed or cancelled.
-
splitCall
Send requests to the server and listens to responses.Example usage:
ResponseObserver<String> responseObserver = new ResponseObserver<String>() { public void onStart(StreamController controller) { // no-op } public void onResponse(String response) { System.out.println(response); } public void onComplete() { System.out.println("done!"); } public void onError(Throwable t) { System.out.println("error: " + t); } }; ClientStream<Integer> clientStream = bidiStreamingCallable.splitCall(responseObserver); clientStream.send(42); clientStream.send(43); clientStream.close();
-
splitCall
public ClientStream<RequestT> splitCall(ResponseObserver<ResponseT> responseObserver, ApiCallContext context) Send requests to the server and listens to responses. -
bidiStreamingCall
@Deprecated public ApiStreamObserver<RequestT> bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver, ApiCallContext context) Deprecated.Please usesplitCall(ResponseObserver, ApiCallContext)
instead.Conduct a bidirectional streaming call with the givenApiCallContext
.- Parameters:
responseObserver
-ApiStreamObserver
to observe the streaming responsescontext
-ApiCallContext
to provide context information for the RPC call.- Returns:
ApiStreamObserver
which is used for making streaming requests.
-
bidiStreamingCall
@Deprecated public ApiStreamObserver<RequestT> bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver) Deprecated.Please usesplitCall(ResponseObserver)
instead.Conduct a bidirectional streaming call- Parameters:
responseObserver
-ApiStreamObserver
to observe the streaming responses- Returns:
ApiStreamObserver
which is used for making streaming requests.
-
withDefaultCallContext
public BidiStreamingCallable<RequestT,ResponseT> withDefaultCallContext(ApiCallContext defaultCallContext) Returns a newBidiStreamingCallable
with anApiCallContext
that is used as a default when none is supplied in individual calls.- Parameters:
defaultCallContext
- the defaultApiCallContext
.
-
splitCall(ResponseObserver)
instead.