Class BidiStreamingCallable<RequestT,ResponseT> (2.72.1)

publicabstractclass 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.

Inheritance

java.lang.Object > BidiStreamingCallable<RequestT,ResponseT>

Type Parameters

Name Description
RequestT
ResponseT

Constructors

BidiStreamingCallable()

protectedBidiStreamingCallable()

Methods

bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver) (deprecated)

publicApiStreamObserver<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

Parameter
Name Description
responseObserver ApiStreamObserver<ResponseT>

ApiStreamObserver to observe the streaming responses

Returns
Type Description
ApiStreamObserver<RequestT>

ApiStreamObserver which is used for making streaming requests.

bidiStreamingCall(ApiStreamObserver<ResponseT> responseObserver, ApiCallContext context) (deprecated)

publicApiStreamObserver<RequestT>bidiStreamingCall(ApiStreamObserver<ResponseT>responseObserver,ApiCallContextcontext)

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.

Parameters
Name Description
responseObserver ApiStreamObserver<ResponseT>

ApiStreamObserver to observe the streaming responses

context ApiCallContext

ApiCallContext to provide context information for the RPC call.

Returns
Type Description
ApiStreamObserver<RequestT>

ApiStreamObserver which is used for making streaming requests.

call()

publicBidiStream<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(Strings: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);
}
Returns
Type Description
BidiStream<RequestT,ResponseT>

call(ApiCallContext context)

publicBidiStream<RequestT,ResponseT>call(ApiCallContextcontext)

Send requests and iterate over server responses.

This returns a live stream that must either be fully consumed or cancelled.

Parameter
Name Description
context ApiCallContext
Returns
Type Description
BidiStream<RequestT,ResponseT>

call(BidiStreamObserver<RequestT,ResponseT> bidiObserver)

publicvoidcall(BidiStreamObserver<RequestT,ResponseT>bidiObserver)

Listens to server responses and send requests when the network is free. Example usage:


finalIterator<Integer>sourceDataIterator=intCollection.iterator();
BidiStreamObserver<Integer,String>bidiStreamObserver=newBidiStreamObserver<Integer,String>(){
publicvoidonStart(StreamControllercontroller){
// no-op
}
publicvoidonResponse(Stringresponse){
System.out.println(response);
}
publicvoidonComplete(){
System.out.println("done!");
}
publicvoidonError(Throwablet){
System.out.println("error: "+t);
}
publicvoidonReady(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);
Parameter
Name Description
bidiObserver BidiStreamObserver<RequestT,ResponseT>

call(BidiStreamObserver<RequestT,ResponseT> bidiObserver, ApiCallContext context)

publicvoidcall(BidiStreamObserver<RequestT,ResponseT>bidiObserver,ApiCallContextcontext)

Listens to server responses and send requests when the network is free.

Parameters
Name Description
bidiObserver BidiStreamObserver<RequestT,ResponseT>
context ApiCallContext

internalCall(ResponseObserver<ResponseT> responseObserver, ClientStreamReadyObserver<RequestT> onReady, ApiCallContext context)

publicabstractClientStream<RequestT>internalCall(ResponseObserver<ResponseT>responseObserver,ClientStreamReadyObserver<RequestT>onReady,ApiCallContextcontext)

The "base" method from which other forms of calls 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.

Parameters
Name Description
responseObserver ResponseObserver<ResponseT>
onReady ClientStreamReadyObserver<RequestT>
context ApiCallContext
Returns
Type Description
ClientStream<RequestT>

splitCall(ResponseObserver<ResponseT> responseObserver)

publicClientStream<RequestT>splitCall(ResponseObserver<ResponseT>responseObserver)

Send requests to the server and listens to responses.

Example usage:


ResponseObserver<String>responseObserver=newResponseObserver<String>(){
publicvoidonStart(StreamControllercontroller){
// no-op
}
publicvoidonResponse(Stringresponse){
System.out.println(response);
}
publicvoidonComplete(){
System.out.println("done!");
}
publicvoidonError(Throwablet){
System.out.println("error: "+t);
}
};
ClientStream<Integer>clientStream=bidiStreamingCallable.splitCall(responseObserver);
clientStream.send(42);
clientStream.send(43);
clientStream.close();
Parameter
Name Description
responseObserver ResponseObserver<ResponseT>
Returns
Type Description
ClientStream<RequestT>

splitCall(ResponseObserver<ResponseT> responseObserver, ApiCallContext context)

publicClientStream<RequestT>splitCall(ResponseObserver<ResponseT>responseObserver,ApiCallContextcontext)

Send requests to the server and listens to responses.

Parameters
Name Description
responseObserver ResponseObserver<ResponseT>
context ApiCallContext
Returns
Type Description
ClientStream<RequestT>

withDefaultCallContext(ApiCallContext defaultCallContext)

publicBidiStreamingCallable<RequestT,ResponseT>withDefaultCallContext(ApiCallContextdefaultCallContext)

Returns a new BidiStreamingCallable with an ApiCallContext that is used as a default when none is supplied in individual calls.

Parameter
Name Description
defaultCallContext ApiCallContext

the default ApiCallContext.

Returns
Type Description
BidiStreamingCallable<RequestT,ResponseT>

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025年11月19日 UTC.