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
Constructors -
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.voidcall(BidiStreamObserver<RequestT, ResponseT> bidiObserver) Listens to server responses and send requests when the network is free.voidcall(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 ofcalls 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 newBidiStreamingCallablewith anApiCallContextthat 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 ofcalls 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-ApiStreamObserverto observe the streaming responsescontext-ApiCallContextto provide context information for the RPC call.- Returns:
ApiStreamObserverwhich 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-ApiStreamObserverto observe the streaming responses- Returns:
ApiStreamObserverwhich is used for making streaming requests.
-
withDefaultCallContext
public BidiStreamingCallable<RequestT,ResponseT> withDefaultCallContext(ApiCallContext defaultCallContext) Returns a newBidiStreamingCallablewith anApiCallContextthat is used as a default when none is supplied in individual calls.- Parameters:
defaultCallContext- the defaultApiCallContext.
-
splitCall(ResponseObserver)instead.