Interface Session

  • All Known Subinterfaces:
    ISession
    All Known Implementing Classes:
    HTTP2ClientSession, HTTP2ServerSession, HTTP2Session

    public interface Session

    A Session represents the client-side endpoint of an HTTP/2 connection to a single origin server.

    Once a Session has been obtained, it can be used to open HTTP/2 streams:

     Session session = ...;
     HeadersFrame frame = ...;
     Promise<Stream> promise = ...
     session.newStream(frame, promise, new Stream.Listener.Adapter()
     {
         public void onHeaders(Stream stream, HeadersFrame frame)
         {
             // Reply received
         }
     });
     

    A Session is the active part of the endpoint, and by calling its API applications can generate events on the connection; conversely Session.Listener is the passive part of the endpoint, and has callbacks that are invoked when events happen on the connection.

    See Also:
    Session.Listener
    • Method Detail

      • newStream

        void newStream​(HeadersFrame frame,
                       Promise<Stream> promise,
                       Stream.Listener listener)

        Sends the given HEADERS frame to create a new Stream.

        Parameters:
        frame - the HEADERS frame containing the HTTP headers
        promise - the promise that gets notified of the stream creation
        listener - the listener that gets notified of stream events
      • priority

        int priority​(PriorityFrame frame,
                     Callback callback)

        Sends the given PRIORITY frame.

        If the frame references a streamId that does not exist (for example 0), then a new streamId will be allocated, to support unused anchor streams that act as parent for other streams.

        Parameters:
        frame - the PRIORITY frame to send
        callback - the callback that gets notified when the frame has been sent
        Returns:
        the new stream id generated by the PRIORITY frame, or the stream id that it is already referencing
      • settings

        void settings​(SettingsFrame frame,
                      Callback callback)

        Sends the given SETTINGS frame to configure the session.

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

        void ping​(PingFrame frame,
                  Callback callback)

        Sends the given PING frame.

        PING frames may be used to test the connection integrity and to measure round-trip time.

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

        boolean close​(int error,
                      java.lang.String payload,
                      Callback callback)

        Closes the session by sending a GOAWAY frame with the given error code and payload.

        The GOAWAY frame is sent only once; subsequent or concurrent attempts to close the session will have no effect.

        Parameters:
        error - the error code
        payload - an optional payload (may be null)
        callback - the callback that gets notified when the frame has been sent
        Returns:
        true if the frame is being sent, false if the session was already closed
      • isClosed

        boolean isClosed()
        Returns:
        whether the session is not open
      • getStreams

        java.util.Collection<Stream> getStreams()
        Returns:
        a snapshot of all the streams currently belonging to this session
      • getStream

        Stream getStream​(int streamId)

        Retrieves the stream with the given streamId.

        Parameters:
        streamId - the stream id of the stream looked for
        Returns:
        the stream with the given id, or null if no such stream exist