Class ServerImpl.JumpToApplicationThreadServerStreamListener

java.lang.Object
io.grpc.internal.ServerImpl.JumpToApplicationThreadServerStreamListener
All Implemented Interfaces:
ServerStreamListener, StreamListener
Enclosing class:
ServerImpl

static final class ServerImpl.JumpToApplicationThreadServerStreamListener extends Object implements ServerStreamListener
Dispatches callbacks onto an application-provided executor and correctly propagates exceptions.
  • Field Details

  • Constructor Details

  • Method Details

    • getListener

      private ServerStreamListener getListener()
      This call MUST be serialized on callExecutor to avoid races.
    • setListener

      void setListener(ServerStreamListener listener)
    • internalClose

      private void internalClose(Throwable t)
      Like ServerCall.close(Status, Metadata), but thread-safe for internal use.
    • messagesAvailable

      public void messagesAvailable(StreamListener.MessageProducer producer)
      Description copied from interface: StreamListener
      Called upon receiving a message from the remote end-point.

      Implementations must eventually drain the provided producer StreamListener.MessageProducer completely by invoking StreamListener.MessageProducer.next() to obtain deframed messages until the producer returns null.

      This method should return quickly, as the same thread may be used to process other streams.

      Specified by:
      messagesAvailable in interface StreamListener
      Parameters:
      producer - supplier of deframed messages.
    • halfClosed

      public void halfClosed()
      Description copied from interface: ServerStreamListener
      Called when the remote side of the transport gracefully closed, indicating the client had no more data to send. No further messages will be received on the stream.

      This method should return quickly, as the same thread may be used to process other streams.

      Specified by:
      halfClosed in interface ServerStreamListener
    • closed

      public void closed(Status status)
      Description copied from interface: ServerStreamListener
      Called when the stream is fully closed. A status code of Status.Code.OK implies normal termination of the stream. Any other value implies abnormal termination. Since clients cannot send status, the passed status is always library-generated and only is concerned with transport-level stream shutdown (the call itself may have had a failing status, but if the stream terminated cleanly with the status appearing to have been sent, then the passed status here would be OK). This is guaranteed to always be the final call on a listener. No further callbacks will be issued.

      This method should return quickly, as the same thread may be used to process other streams.

      Specified by:
      closed in interface ServerStreamListener
      Parameters:
      status - details about the remote closure
    • closedInternal

      private void closedInternal(Status status)
    • onReady

      public void onReady()
      Description copied from interface: StreamListener
      This indicates that the transport is now 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 transport.
      Specified by:
      onReady in interface StreamListener