public abstract class ForwardingServerCall<ReqT,RespT> extends ServerCall<ReqT,RespT>
ServerCall
which forwards all of it's methods to another ServerCall
.Modifier and Type | Class and Description |
---|---|
static class |
ForwardingServerCall.SimpleForwardingServerCall<ReqT,RespT>
A simplified version of
ForwardingServerCall where subclasses can pass in a ServerCall as the delegate. |
ServerCall.Listener<ReqT>
REMOTE_ADDR_KEY, SSL_SESSION_KEY
Constructor and Description |
---|
ForwardingServerCall() |
Modifier and Type | Method and Description |
---|---|
Attributes |
attributes()
Returns properties of a single call.
|
void |
close(Status status,
Metadata trailers)
Close the call with the provided status.
|
protected abstract ServerCall<ReqT,RespT> |
delegate()
Returns the delegated
ServerCall . |
boolean |
isCancelled()
Returns
true when the call is cancelled and the server is encouraged to abort
processing to save resources, since the client will not be processing any further methods. |
boolean |
isReady()
If
true , indicates that the call is capable of sending additional messages
without requiring excessive buffering internally. |
void |
request(int numMessages)
Requests up to the given number of messages from the call to be delivered to
ServerCall.Listener.onMessage(Object) . |
void |
sendHeaders(Metadata headers)
Send response header metadata prior to sending a response message.
|
void |
sendMessage(RespT message)
Send a response message.
|
void |
setCompression(String compressor)
Sets the compression algorithm for this call.
|
void |
setMessageCompression(boolean enabled)
Enables per-message compression, if an encoding type has been negotiated.
|
getMethodDescriptor
protected abstract ServerCall<ReqT,RespT> delegate()
ServerCall
.public void sendMessage(RespT message)
ServerCall
sendMessage
in class ServerCall<ReqT,RespT>
message
- response message.public void request(int numMessages)
ServerCall
ServerCall.Listener.onMessage(Object)
. Once numMessages
have been delivered
no further request messages will be delivered until more messages are requested by
calling this method again.
Servers use this mechanism to provide back-pressure to the client for flow-control.
This method is safe to call from multiple threads without external synchronizaton.
request
in class ServerCall<ReqT,RespT>
numMessages
- the requested number of messages to be delivered to the listener.public void sendHeaders(Metadata headers)
ServerCall
ServerCall.sendMessage(RespT)
or ServerCall.close(io.grpc.Status, io.grpc.Metadata)
.
Since Metadata
is not thread-safe, the caller must not access headers
after
this point.
sendHeaders
in class ServerCall<ReqT,RespT>
headers
- metadata to send prior to any response body.public boolean isReady()
ServerCall
true
, indicates that the call is capable of sending additional messages
without requiring excessive buffering internally. This event is
just a suggestion and the application is free to ignore it, however doing so may
result in excessive buffering within the call.
This implementation always returns true
.
isReady
in class ServerCall<ReqT,RespT>
public void close(Status status, Metadata trailers)
ServerCall
Status.isOk()
is false
, then the call is said to have failed.
If no errors or cancellations are known to have occurred, then a ServerCall.Listener.onComplete()
notification should be expected, independent of status
. Otherwise ServerCall.Listener.onCancel()
has been or will be called.
Since Metadata
is not thread-safe, the caller must not access trailers
after
this point.
close
in class ServerCall<ReqT,RespT>
public boolean isCancelled()
ServerCall
true
when the call is cancelled and the server is encouraged to abort
processing to save resources, since the client will not be processing any further methods.
Cancellations can be caused by timeouts, explicit cancel by client, network errors, and
similar.
This method may safely be called concurrently from multiple threads.
isCancelled
in class ServerCall<ReqT,RespT>
@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1703") public void setMessageCompression(boolean enabled)
ServerCall
setMessageCompression
in class ServerCall<ReqT,RespT>
@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1704") public void setCompression(String compressor)
ServerCall
ServerCall.sendHeaders(io.grpc.Metadata)
.
The compressor to use will be looked up in the CompressorRegistry
. Default gRPC
servers support the "gzip" compressor.setCompression
in class ServerCall<ReqT,RespT>
compressor
- the name of the compressor to use.@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1779") public Attributes attributes()
ServerCall
attributes
in class ServerCall<ReqT,RespT>