Class AbstractServerStream

java.lang.Object
io.grpc.internal.AbstractStream
io.grpc.internal.AbstractServerStream
All Implemented Interfaces:
MessageFramer.Sink, ServerStream, Stream

public abstract class AbstractServerStream extends AbstractStream implements ServerStream, MessageFramer.Sink
Abstract base class for ServerStream implementations. Extending classes only need to implement transportState() and abstractServerStreamSink(). Must only be called from the sending application thread.
  • Constructor Details

  • Method Details

    • transportState

      protected abstract AbstractServerStream.TransportState transportState()
      Description copied from class: AbstractStream
      Obtain the transport state corresponding to this stream. Each stream must have its own unique transport state.
      Specified by:
      transportState in class AbstractStream
    • abstractServerStreamSink

      protected abstract AbstractServerStream.Sink abstractServerStreamSink()
      Sink for transport to be called to perform outbound operations. Each stream must have its own unique sink.
    • framer

      protected final MessageFramer framer()
      Description copied from class: AbstractStream
      The framer to use for sending messages.
      Specified by:
      framer in class AbstractStream
    • writeHeaders

      public final void writeHeaders(Metadata headers, boolean flush)
      Description copied from interface: ServerStream
      Writes custom metadata as headers on the response stream sent to the client. This method may only be called once and cannot be called after calls to Stream.writeMessage(java.io.InputStream) or ServerStream.close(io.grpc.Status, io.grpc.Metadata).
      Specified by:
      writeHeaders in interface ServerStream
      Parameters:
      headers - to send to client.
    • deliverFrame

      public final void deliverFrame(WritableBuffer frame, boolean endOfStream, boolean flush, int numMessages)
      Description copied from interface: MessageFramer.Sink
      Delivers a frame via the transport.
      Specified by:
      deliverFrame in interface MessageFramer.Sink
      Parameters:
      frame - a non-empty buffer to deliver or null if the framer is being closed and there is no data to deliver.
      endOfStream - whether the frame is the last one for the GRPC stream
      flush - true if more data may not be arriving soon
      numMessages - the number of messages that this series of frames represents
    • close

      public final void close(Status status, Metadata trailers)
      Description copied from interface: ServerStream
      Closes the stream for both reading and writing. A status code of Status.Code.OK implies normal termination of the stream. Any other value implies abnormal termination.

      Attempts to read from or write to the stream after closing should be ignored by implementations, and should not throw exceptions.

      Specified by:
      close in interface ServerStream
      Parameters:
      status - details of the closure
      trailers - an additional block of metadata to pass to the client on stream closure.
    • cancel

      public final void cancel(Status status)
      Description copied from interface: ServerStream
      Tears down the stream, typically in the event of a timeout. This method may be called multiple times and from any thread.
      Specified by:
      cancel in interface ServerStream
    • isReady

      public final boolean isReady()
      Description copied from interface: Stream
      If true, indicates that the transport is capable of sending additional messages without requiring excessive buffering internally. Otherwise, StreamListener.onReady() will be called when it turns true.

      This 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:
      isReady in interface Stream
      Overrides:
      isReady in class AbstractStream
    • setDecompressor

      public final void setDecompressor(Decompressor decompressor)
      Description copied from interface: ServerStream
      Sets the decompressor on the deframer. If the transport does not support compression, this may do nothing.
      Specified by:
      setDecompressor in interface ServerStream
      Parameters:
      decompressor - the decompressor to use.
    • getAttributes

      public Attributes getAttributes()
      Description copied from interface: ServerStream
      Attributes describing stream. This is inherited from the transport attributes, and used as the basis of ServerCall.getAttributes().
      Specified by:
      getAttributes in interface ServerStream
      Returns:
      Attributes container
    • getAuthority

      public String getAuthority()
      Description copied from interface: ServerStream
      Gets the authority this stream is addressed to.
      Specified by:
      getAuthority in interface ServerStream
      Returns:
      the authority string. null if not available.
    • setListener

      public final void setListener(ServerStreamListener serverStreamListener)
      Description copied from interface: ServerStream
      Sets the server stream listener.
      Specified by:
      setListener in interface ServerStream
    • statsTraceContext

      public StatsTraceContext statsTraceContext()
      Description copied from interface: ServerStream
      The context for recording stats and traces for this stream.
      Specified by:
      statsTraceContext in interface ServerStream
    • setOnReadyThreshold

      public void setOnReadyThreshold(int numBytes)
      A hint to the stream that specifies how many bytes must be queued before isReady() will return false. A stream may ignore this property if unsupported. This may only be set before any messages are sent.
      Specified by:
      setOnReadyThreshold in interface ServerStream
      Overrides:
      setOnReadyThreshold in class AbstractStream
      Parameters:
      numBytes - The number of bytes that must be queued. Must be a positive integer.