Interface Stream

All Known Subinterfaces:
IStream
All Known Implementing Classes:
HTTP2Stream

public interface Stream

A Stream represents a bidirectional exchange of data on top of a Session.

Differently from socket streams, where the input and output streams are permanently associated with the socket (and hence with the connection that the socket represents), there can be multiple HTTP/2 streams present concurrently for an HTTP/2 session.

A Stream maps to an HTTP request/response cycle, and after the request/response cycle is completed, the stream is closed and removed from the session.

Like Session, Stream is the active part and by calling its API applications can generate events on the stream; conversely, Stream.Listener is the passive part, and its callbacks are invoked when events happen on the stream.

See Also:
  • Method Details

    • getId

      int getId()
      Returns:
      the stream unique id
    • getSession

      Session getSession()
      Returns:
      the session this stream is associated to
    • headers

      default CompletableFuture<Stream> headers(HeadersFrame frame)

      Sends the given HEADERS frame representing an HTTP response.

      Parameters:
      frame - the HEADERS frame to send
      Returns:
      the CompletableFuture that gets notified when the frame has been sent
    • headers

      void headers(HeadersFrame frame, Callback callback)

      Sends the given HEADERS frame.

      Typically used to send an HTTP response or to send the HTTP response trailers.

      Parameters:
      frame - the HEADERS frame to send
      callback - the callback that gets notified when the frame has been sent
    • push

      default CompletableFuture<Stream> push(PushPromiseFrame frame, Stream.Listener listener)

      Sends the given PUSH_PROMISE frame.

      Parameters:
      frame - the PUSH_PROMISE frame to send
      listener - the listener that gets notified of stream events
      Returns:
      the CompletableFuture that gets notified of the pushed stream creation
    • push

      void push(PushPromiseFrame frame, Promise<Stream> promise, Stream.Listener listener)

      Sends the given PUSH_PROMISE frame.

      Parameters:
      frame - the PUSH_PROMISE frame to send
      promise - the promise that gets notified of the pushed stream creation
      listener - the listener that gets notified of stream events
    • data

      default CompletableFuture<Stream> data(DataFrame frame)

      Sends the given DATA frame.

      Parameters:
      frame - the DATA frame to send
      Returns:
      the CompletableFuture that gets notified when the frame has been sent
    • data

      void data(DataFrame frame, Callback callback)

      Sends the given DATA frame.

      Parameters:
      frame - the DATA frame to send
      callback - the callback that gets notified when the frame has been sent
    • reset

      void reset(ResetFrame frame, Callback callback)

      Sends the given RST_STREAM frame.

      Parameters:
      frame - the RST_FRAME to send
      callback - the callback that gets notified when the frame has been sent
    • getAttribute

      Object getAttribute(String key)
      Parameters:
      key - the attribute key
      Returns:
      an arbitrary object associated with the given key to this stream or null if no object can be found for the given key.
      See Also:
    • setAttribute

      void setAttribute(String key, Object value)
      Parameters:
      key - the attribute key
      value - an arbitrary object to associate with the given key to this stream
      See Also:
    • removeAttribute

      Object removeAttribute(String key)
      Parameters:
      key - the attribute key
      Returns:
      the arbitrary object associated with the given key to this stream
      See Also:
    • isReset

      boolean isReset()
      Returns:
      whether this stream has been reset
    • isClosed

      boolean isClosed()
      Returns:
      whether this stream is closed, both locally and remotely.
    • getIdleTimeout

      long getIdleTimeout()
      Returns:
      the stream idle timeout
      See Also:
    • setIdleTimeout

      void setIdleTimeout(long idleTimeout)
      Parameters:
      idleTimeout - the stream idle timeout
      See Also:
    • demand

      void demand(long n)

      Demands n more DATA frames for this stream.

      Parameters:
      n - the increment of the demand, must be greater than zero
      See Also: