Package io.grpc.util

Class TransmitStatusRuntimeExceptionInterceptor.SerializingServerCall<ReqT,RespT>

java.lang.Object
io.grpc.ServerCall<ReqT,RespT>
io.grpc.PartialForwardingServerCall<ReqT,RespT>
io.grpc.ForwardingServerCall<ReqT,RespT>
io.grpc.ForwardingServerCall.SimpleForwardingServerCall<ReqT,RespT>
io.grpc.util.TransmitStatusRuntimeExceptionInterceptor.SerializingServerCall<ReqT,RespT>
Enclosing class:
TransmitStatusRuntimeExceptionInterceptor

private static class TransmitStatusRuntimeExceptionInterceptor.SerializingServerCall<ReqT,RespT> extends ForwardingServerCall.SimpleForwardingServerCall<ReqT,RespT>
A ServerCall that wraps around a non thread safe delegate and provides thread safe access by serializing everything on an executor.
  • Field Details

  • Constructor Details

  • Method Details

    • sendMessage

      public void sendMessage(RespT message)
      Description copied from class: ServerCall
      Send a response message. Messages are the primary form of communication associated with RPCs. Multiple response messages may exist for streaming calls.
      Overrides:
      sendMessage in class ForwardingServerCall<ReqT,RespT>
      Parameters:
      message - response message.
    • request

      public void request(int numMessages)
      Description copied from class: ServerCall
      Requests up to the given number of messages from the call to be delivered to 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 synchronization.

      Overrides:
      request in class PartialForwardingServerCall<ReqT,RespT>
      Parameters:
      numMessages - the requested number of messages to be delivered to the listener.
    • sendHeaders

      public void sendHeaders(Metadata headers)
      Description copied from class: ServerCall
      Send response header metadata prior to sending a response message. This method may only be called once and cannot be called after calls to ServerCall.sendMessage(RespT) or ServerCall.close(io.grpc.Status, io.grpc.Metadata).

      Since Metadata is not thread-safe, the caller must not access (read or write) headers after this point.

      Overrides:
      sendHeaders in class PartialForwardingServerCall<ReqT,RespT>
      Parameters:
      headers - metadata to send prior to any response body.
    • close

      public void close(Status status, Metadata trailers)
      Description copied from class: ServerCall
      Close the call with the provided status. No further sending or receiving will occur. If 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 (read or write) trailers after this point.

      This method implies the caller completed processing the RPC, but it does not imply the RPC is complete. The call implementation will need additional time to complete the RPC and during this time the client is still able to cancel the request or a network error might cause the RPC to fail. If you wish to know when the call is actually completed/closed, you have to use ServerCall.Listener.onComplete() or ServerCall.Listener.onCancel() instead. This method is not necessarily invoked when Listener.onCancel() is called.

      Overrides:
      close in class PartialForwardingServerCall<ReqT,RespT>
    • isReady

      public boolean isReady()
      Description copied from class: ServerCall
      If 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.

      If false, ServerCall.Listener.onReady() will be called after isReady() transitions to true.

      This abstract class's implementation always returns true. Implementations generally override the method.

      Overrides:
      isReady in class PartialForwardingServerCall<ReqT,RespT>
    • isCancelled

      public boolean isCancelled()
      Description copied from class: ServerCall
      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. Cancellations can be caused by timeouts, explicit cancel by client, network errors, and similar.

      This method may safely be called concurrently from multiple threads.

      Overrides:
      isCancelled in class PartialForwardingServerCall<ReqT,RespT>
    • setMessageCompression

      public void setMessageCompression(boolean enabled)
      Description copied from class: ServerCall
      Enables per-message compression, if an encoding type has been negotiated. If no message encoding has been negotiated, this is a no-op. By default per-message compression is enabled, but may not have any effect if compression is not enabled on the call.
      Overrides:
      setMessageCompression in class PartialForwardingServerCall<ReqT,RespT>
    • setOnReadyThreshold

      @ExperimentalApi("https://github.com/grpc/grpc-java/issues/11021") public void setOnReadyThreshold(int numBytes)
      Description copied from class: ServerCall
      A hint to the call that specifies how many bytes must be queued before ServerCall.isReady() will return false. A call may ignore this property if unsupported. This may only be set before any messages are sent.
      Overrides:
      setOnReadyThreshold in class PartialForwardingServerCall<ReqT,RespT>
      Parameters:
      numBytes - The number of bytes that must be queued. Must be a positive integer.
    • setCompression

      public void setCompression(String compressor)
      Description copied from class: ServerCall
      Sets the compression algorithm for this call. This compression is utilized for sending. If the server does not support the compression algorithm, the call will fail. This method may only be called before ServerCall.sendHeaders(io.grpc.Metadata). The compressor to use will be looked up in the CompressorRegistry. Default gRPC servers support the "gzip" compressor.

      It is safe to call this even if the client does not support the compression format chosen. The implementation will handle negotiation with the client and may fall back to no compression.

      Overrides:
      setCompression in class PartialForwardingServerCall<ReqT,RespT>
      Parameters:
      compressor - the name of the compressor to use.
    • getAttributes

      public Attributes getAttributes()
      Description copied from class: ServerCall
      Returns properties of a single call.

      Attributes originate from the transport and can be altered by ServerTransportFilter.

      Overrides:
      getAttributes in class PartialForwardingServerCall<ReqT,RespT>
      Returns:
      non-null Attributes container
    • getAuthority

      @Nullable public String getAuthority()
      Description copied from class: ServerCall
      Gets the authority this call is addressed to.
      Overrides:
      getAuthority in class PartialForwardingServerCall<ReqT,RespT>
      Returns:
      the authority string. null if not available.