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:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static interface 
    A Session.Listener is the passive counterpart of a Session and receives events happening on an HTTP/2 connection.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    close(int error, String payload, org.eclipse.jetty.util.Callback callback)
    Closes the session by sending a GOAWAY frame with the given error code and payload.
    getStream(int streamId)
    Retrieves the stream with the given streamId.
     
    boolean
     
    void
    newStream(HeadersFrame frame, org.eclipse.jetty.util.Promise<Stream> promise, Stream.Listener listener)
    Sends the given HEADERS frame to create a new Stream.
    void
    ping(PingFrame frame, org.eclipse.jetty.util.Callback callback)
    Sends the given PING frame.
    int
    priority(PriorityFrame frame, org.eclipse.jetty.util.Callback callback)
    Sends the given PRIORITY frame.
    void
    settings(SettingsFrame frame, org.eclipse.jetty.util.Callback callback)
    Sends the given SETTINGS frame to configure the session.
  • Method Details

    • newStream

      void newStream(HeadersFrame frame, org.eclipse.jetty.util.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, org.eclipse.jetty.util.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, org.eclipse.jetty.util.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, org.eclipse.jetty.util.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, String payload, org.eclipse.jetty.util.Callback callback)

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

      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

      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