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 concurrent 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:
    Stream.Listener
    • Method Detail

      • getId

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

        Session getSession()
        Returns:
        the session this stream is associated to
      • 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

        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

        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

        java.lang.Object getAttribute​(java.lang.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(String, Object)
      • setAttribute

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

        java.lang.Object removeAttribute​(java.lang.String key)
        Parameters:
        key - the attribute key
        Returns:
        the arbitrary object associated with the given key to this stream
        See Also:
        setAttribute(String, Object)
      • 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(long)