Package io.grpc.stub
Class ClientCalls
- java.lang.Object
-
- io.grpc.stub.ClientCalls
-
public final class ClientCalls extends java.lang.Object
Utility functions for processing different call idioms. We have one-to-one correspondence between utilities in this class and the potential signatures in a generated stub class so that the runtime can vary behavior without requiring regeneration of the stub.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ClientCalls.BlockingResponseStream<T>
Convert events on aClientCall.Listener
into a blockingIterator
.private static class
ClientCalls.CallToStreamObserverAdapter<ReqT>
private static class
ClientCalls.GrpcFuture<RespT>
private static class
ClientCalls.StartableListener<T>
private static class
ClientCalls.StreamObserverToCallListenerAdapter<ReqT,RespT>
(package private) static class
ClientCalls.StubType
private static class
ClientCalls.ThreadlessExecutor
private static class
ClientCalls.UnaryStreamToFuture<RespT>
Completes aClientCalls.GrpcFuture
usingStreamObserver
events.
-
Field Summary
Fields Modifier and Type Field Description private static java.util.logging.Logger
logger
(package private) static boolean
rejectRunnableOnExecutor
(package private) static CallOptions.Key<ClientCalls.StubType>
STUB_TYPE_OPTION
InternalCallOptions.Key
to indicate stub types.
-
Constructor Summary
Constructors Modifier Constructor Description private
ClientCalls()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <ReqT,RespT>
StreamObserver<ReqT>asyncBidiStreamingCall(ClientCall<ReqT,RespT> call, StreamObserver<RespT> responseObserver)
Executes a bidirectional-streaming call.static <ReqT,RespT>
StreamObserver<ReqT>asyncClientStreamingCall(ClientCall<ReqT,RespT> call, StreamObserver<RespT> responseObserver)
Executes a client-streaming call returning aStreamObserver
for the request messages.static <ReqT,RespT>
voidasyncServerStreamingCall(ClientCall<ReqT,RespT> call, ReqT req, StreamObserver<RespT> responseObserver)
Executes a server-streaming call with a responseStreamObserver
.private static <ReqT,RespT>
StreamObserver<ReqT>asyncStreamingRequestCall(ClientCall<ReqT,RespT> call, StreamObserver<RespT> responseObserver, boolean streamingResponse)
static <ReqT,RespT>
voidasyncUnaryCall(ClientCall<ReqT,RespT> call, ReqT req, StreamObserver<RespT> responseObserver)
Executes a unary call with a responseStreamObserver
.private static <ReqT,RespT>
voidasyncUnaryRequestCall(ClientCall<ReqT,RespT> call, ReqT req, ClientCalls.StartableListener<RespT> responseListener)
private static <ReqT,RespT>
voidasyncUnaryRequestCall(ClientCall<ReqT,RespT> call, ReqT req, StreamObserver<RespT> responseObserver, boolean streamingResponse)
static <ReqT,RespT>
java.util.Iterator<RespT>blockingServerStreamingCall(Channel channel, MethodDescriptor<ReqT,RespT> method, CallOptions callOptions, ReqT req)
Executes a server-streaming call returning a blockingIterator
over the response stream.static <ReqT,RespT>
java.util.Iterator<RespT>blockingServerStreamingCall(ClientCall<ReqT,RespT> call, ReqT req)
Executes a server-streaming call returning a blockingIterator
over the response stream.static <ReqT,RespT>
RespTblockingUnaryCall(Channel channel, MethodDescriptor<ReqT,RespT> method, CallOptions callOptions, ReqT req)
Executes a unary call and blocks on the response.static <ReqT,RespT>
RespTblockingUnaryCall(ClientCall<ReqT,RespT> call, ReqT req)
Executes a unary call and blocks on the response.private static java.lang.RuntimeException
cancelThrow(ClientCall<?,?> call, java.lang.Throwable t)
Cancels a call, and throws the exception.static <ReqT,RespT>
com.google.common.util.concurrent.ListenableFuture<RespT>futureUnaryCall(ClientCall<ReqT,RespT> call, ReqT req)
Executes a unary call and returns aListenableFuture
to the response.private static <V> V
getUnchecked(java.util.concurrent.Future<V> future)
Returns the result of callingFuture.get()
interruptibly on a task known not to throw a checked exception.private static <ReqT,RespT>
voidstartCall(ClientCall<ReqT,RespT> call, ClientCalls.StartableListener<RespT> responseListener)
private static StatusRuntimeException
toStatusRuntimeException(java.lang.Throwable t)
Wraps the givenThrowable
in aStatusRuntimeException
.
-
-
-
Field Detail
-
logger
private static final java.util.logging.Logger logger
-
rejectRunnableOnExecutor
static boolean rejectRunnableOnExecutor
-
STUB_TYPE_OPTION
static final CallOptions.Key<ClientCalls.StubType> STUB_TYPE_OPTION
InternalCallOptions.Key
to indicate stub types.
-
-
Method Detail
-
asyncUnaryCall
public static <ReqT,RespT> void asyncUnaryCall(ClientCall<ReqT,RespT> call, ReqT req, StreamObserver<RespT> responseObserver)
Executes a unary call with a responseStreamObserver
. Thecall
should not be already started. After calling this method,call
should no longer be used.If the provided
responseObserver
is an instance ofClientResponseObserver
,beforeStart()
will be called.
-
asyncServerStreamingCall
public static <ReqT,RespT> void asyncServerStreamingCall(ClientCall<ReqT,RespT> call, ReqT req, StreamObserver<RespT> responseObserver)
Executes a server-streaming call with a responseStreamObserver
. Thecall
should not be already started. After calling this method,call
should no longer be used.If the provided
responseObserver
is an instance ofClientResponseObserver
,beforeStart()
will be called.
-
asyncClientStreamingCall
public static <ReqT,RespT> StreamObserver<ReqT> asyncClientStreamingCall(ClientCall<ReqT,RespT> call, StreamObserver<RespT> responseObserver)
Executes a client-streaming call returning aStreamObserver
for the request messages. Thecall
should not be already started. After calling this method,call
should no longer be used.If the provided
responseObserver
is an instance ofClientResponseObserver
,beforeStart()
will be called.- Returns:
- request stream observer. It will extend
ClientCallStreamObserver
-
asyncBidiStreamingCall
public static <ReqT,RespT> StreamObserver<ReqT> asyncBidiStreamingCall(ClientCall<ReqT,RespT> call, StreamObserver<RespT> responseObserver)
Executes a bidirectional-streaming call. Thecall
should not be already started. After calling this method,call
should no longer be used.If the provided
responseObserver
is an instance ofClientResponseObserver
,beforeStart()
will be called.- Returns:
- request stream observer. It will extend
ClientCallStreamObserver
-
blockingUnaryCall
public static <ReqT,RespT> RespT blockingUnaryCall(ClientCall<ReqT,RespT> call, ReqT req)
Executes a unary call and blocks on the response. Thecall
should not be already started. After calling this method,call
should no longer be used.- Returns:
- the single response message.
- Throws:
StatusRuntimeException
- on error
-
blockingUnaryCall
public static <ReqT,RespT> RespT blockingUnaryCall(Channel channel, MethodDescriptor<ReqT,RespT> method, CallOptions callOptions, ReqT req)
Executes a unary call and blocks on the response. Thecall
should not be already started. After calling this method,call
should no longer be used.- Returns:
- the single response message.
- Throws:
StatusRuntimeException
- on error
-
blockingServerStreamingCall
public static <ReqT,RespT> java.util.Iterator<RespT> blockingServerStreamingCall(ClientCall<ReqT,RespT> call, ReqT req)
Executes a server-streaming call returning a blockingIterator
over the response stream. Thecall
should not be already started. After calling this method,call
should no longer be used.The returned iterator may throw
StatusRuntimeException
on error.- Returns:
- an iterator over the response stream.
-
blockingServerStreamingCall
public static <ReqT,RespT> java.util.Iterator<RespT> blockingServerStreamingCall(Channel channel, MethodDescriptor<ReqT,RespT> method, CallOptions callOptions, ReqT req)
Executes a server-streaming call returning a blockingIterator
over the response stream. Thecall
should not be already started. After calling this method,call
should no longer be used.The returned iterator may throw
StatusRuntimeException
on error.- Returns:
- an iterator over the response stream.
-
futureUnaryCall
public static <ReqT,RespT> com.google.common.util.concurrent.ListenableFuture<RespT> futureUnaryCall(ClientCall<ReqT,RespT> call, ReqT req)
Executes a unary call and returns aListenableFuture
to the response. Thecall
should not be already started. After calling this method,call
should no longer be used.- Returns:
- a future for the single response message.
-
getUnchecked
private static <V> V getUnchecked(java.util.concurrent.Future<V> future)
Returns the result of callingFuture.get()
interruptibly on a task known not to throw a checked exception.If interrupted, the interrupt is restored before throwing an exception..
- Throws:
java.util.concurrent.CancellationException
- ifget
throws aCancellationException
.StatusRuntimeException
- ifget
throws anExecutionException
or anInterruptedException
.
-
toStatusRuntimeException
private static StatusRuntimeException toStatusRuntimeException(java.lang.Throwable t)
Wraps the givenThrowable
in aStatusRuntimeException
. If it contains an embeddedStatusException
orStatusRuntimeException
, the returned exception will contain the embedded trailers and status, with the given exception as the cause. Otherwise, an exception will be generated from anStatus.UNKNOWN
status.
-
cancelThrow
private static java.lang.RuntimeException cancelThrow(ClientCall<?,?> call, java.lang.Throwable t)
Cancels a call, and throws the exception.- Parameters:
t
- must be a RuntimeException or Error
-
asyncUnaryRequestCall
private static <ReqT,RespT> void asyncUnaryRequestCall(ClientCall<ReqT,RespT> call, ReqT req, StreamObserver<RespT> responseObserver, boolean streamingResponse)
-
asyncUnaryRequestCall
private static <ReqT,RespT> void asyncUnaryRequestCall(ClientCall<ReqT,RespT> call, ReqT req, ClientCalls.StartableListener<RespT> responseListener)
-
asyncStreamingRequestCall
private static <ReqT,RespT> StreamObserver<ReqT> asyncStreamingRequestCall(ClientCall<ReqT,RespT> call, StreamObserver<RespT> responseObserver, boolean streamingResponse)
-
startCall
private static <ReqT,RespT> void startCall(ClientCall<ReqT,RespT> call, ClientCalls.StartableListener<RespT> responseListener)
-
-