public abstract class BidiStreamingCallable<RequestT,ResponseT>
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.
Type Parameters
Name | Description |
RequestT | |
ResponseT |
Constructors
BidiStreamingCallable()
protected BidiStreamingCallable()
Methods
bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver) (deprecated)
public ApiStreamObserver<RequestT> bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver)
Deprecated. Please use <xref uid="com.google.api.gax.rpc.BidiStreamingCallable.splitCall(com.google.api.gax.rpc.ResponseObserver<ResponseT>)" data-throw-if-not-resolved="false">#splitCall(ResponseObserver) instead.
Conduct a bidirectional streaming call
Name | Description |
responseObserver | ApiStreamObserver<ResponseT> ApiStreamObserver to observe the streaming responses |
Type | Description |
ApiStreamObserver<RequestT> | ApiStreamObserver which is used for making streaming requests. |
bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver, ApiCallContext context) (deprecated)
public ApiStreamObserver<RequestT> bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver, ApiCallContext context)
Deprecated. Please use <xref uid="com.google.api.gax.rpc.BidiStreamingCallable.splitCall(com.google.api.gax.rpc.ResponseObserver<ResponseT>,com.google.api.gax.rpc.ApiCallContext)" data-throw-if-not-resolved="false">#splitCall(ResponseObserver, ApiCallContext) instead.
Conduct a bidirectional streaming call with the given ApiCallContext.
Name | Description |
responseObserver | ApiStreamObserver<ResponseT> ApiStreamObserver to observe the streaming responses |
context | ApiCallContext ApiCallContext to provide context information for the RPC call. |
Type | Description |
ApiStreamObserver<RequestT> | ApiStreamObserver which is used for making streaming requests. |
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);
}
Type | Description |
BidiStream<RequestT,ResponseT> |
call(ApiCallContext context)
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.
Name | Description |
context | ApiCallContext |
Type | Description |
BidiStream<RequestT,ResponseT> |
call(BidiStreamObserver<RequestT,ResponseT> bidiObserver)
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);
Name | Description |
bidiObserver | BidiStreamObserver<RequestT,ResponseT> |
call(BidiStreamObserver<RequestT,ResponseT> bidiObserver, ApiCallContext context)
public void call(BidiStreamObserver<RequestT,ResponseT> bidiObserver, ApiCallContext context)
Listens to server responses and send requests when the network is free.
Name | Description |
bidiObserver | BidiStreamObserver<RequestT,ResponseT> |
context | ApiCallContext |
internalCall(ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext context)
public abstract ClientStream<RequestT> internalCall(ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext context)
The "base" method from which other forms of call
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.
Name | Description |
responseObserver | ResponseObserver<ResponseT> |
onReady | ClientStreamReadyObserver<RequestT> |
context | ApiCallContext |
Type | Description |
ClientStream<RequestT> |
splitCall(ResponseObserver<ResponseT> responseObserver)
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();
Name | Description |
responseObserver | ResponseObserver<ResponseT> |
Type | Description |
ClientStream<RequestT> |
splitCall(ResponseObserver<ResponseT> responseObserver, ApiCallContext context)
public ClientStream<RequestT> splitCall(ResponseObserver<ResponseT> responseObserver, ApiCallContext context)
Send requests to the server and listens to responses.
Name | Description |
responseObserver | ResponseObserver<ResponseT> |
context | ApiCallContext |
Type | Description |
ClientStream<RequestT> |
withDefaultCallContext(ApiCallContext defaultCallContext)
public BidiStreamingCallable<RequestT,ResponseT> withDefaultCallContext(ApiCallContext defaultCallContext)
Returns a new BidiStreamingCallable
with an ApiCallContext that is used as a
default when none is supplied in individual calls.
Name | Description |
defaultCallContext | ApiCallContext the default ApiCallContext. |
Type | Description |
BidiStreamingCallable<RequestT,ResponseT> |