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
public abstract class BidiStreamingCallable<RequestT,ResponseT> extends java.lang.ObjectA 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 Modifier Constructor Description protectedBidiStreamingCallable()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description ApiStreamObserver<RequestT>bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver)Deprecated.Please usesplitCall(ResponseObserver)instead.ApiStreamObserver<RequestT>bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver, ApiCallContext context)Deprecated.Please usesplitCall(ResponseObserver, ApiCallContext)instead.BidiStream<RequestT,ResponseT>call()Send requests and iterate over server responses.BidiStream<RequestT,ResponseT>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.ClientStream<RequestT>splitCall(ResponseObserver<ResponseT> responseObserver)Send requests to the server and listens to responses.ClientStream<RequestT>splitCall(ResponseObserver<ResponseT> responseObserver, ApiCallContext context)Send requests to the server and listens to responses.BidiStreamingCallable<RequestT,ResponseT>withDefaultCallContext(ApiCallContext defaultCallContext)Returns a newBidiStreamingCallablewith anApiCallContextthat is used as a default when none is supplied in individual calls.
-
-
-
Method Detail
-
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
public void call(BidiStreamObserver<RequestT,ResponseT> bidiObserver)
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
public void call(BidiStreamObserver<RequestT,ResponseT> bidiObserver, ApiCallContext context)
Listens to server responses and send requests when the network is free.
-
call
public BidiStream<RequestT,ResponseT> 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
public BidiStream<RequestT,ResponseT> call(ApiCallContext context)
Send requests and iterate over server responses.This returns a live stream that must either be fully consumed or cancelled.
-
splitCall
public ClientStream<RequestT> splitCall(ResponseObserver<ResponseT> responseObserver)
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.
-
-