Class SpdyConnection

java.lang.Object
com.squareup.okhttp.internal.spdy.SpdyConnection
All Implemented Interfaces:
Closeable, AutoCloseable

public final class SpdyConnection
extends Object
implements Closeable
A socket connection to a remote peer. A connection hosts streams which can send and receive data.

Many methods in this API are synchronous: the call is completed before the method returns. This is typical for Java but atypical for SPDY. This is motivated by exception transparency: an IOException that was triggered by a certain caller can be caught and handled by that caller.

  • Method Details

    • openStreamCount

      public int openStreamCount()
      Returns the number of open streams on this connection.
    • isIdle

      public boolean isIdle()
      Returns true if this connection is idle.
    • getIdleStartTimeNs

      public long getIdleStartTimeNs()
      Returns the time in ns when this connection became idle or 0L if connection is not idle.
    • newStream

      public SpdyStream newStream​(List<String> requestHeaders, boolean out, boolean in) throws IOException
      Returns a new locally-initiated stream.
      Parameters:
      out - true to create an output stream that we can use to send data to the remote peer. Corresponds to FLAG_FIN.
      in - true to create an input stream that the remote peer can use to send data to us. Corresponds to FLAG_UNIDIRECTIONAL.
      Throws:
      IOException
    • ping

      public Ping ping() throws IOException
      Sends a ping frame to the peer. Use the returned object to await the ping's response and observe its round trip time.
      Throws:
      IOException
    • noop

      public void noop() throws IOException
      Sends a noop frame to the peer.
      Throws:
      IOException
    • flush

      public void flush() throws IOException
      Throws:
      IOException
    • shutdown

      public void shutdown​(int statusCode) throws IOException
      Degrades this connection such that new streams can neither be created locally, nor accepted from the remote peer. Existing streams are not impacted. This is intended to permit an endpoint to gracefully stop accepting new requests without harming previously established streams.
      Parameters:
      statusCode - one of GOAWAY_OK, GOAWAY_INTERNAL_ERROR or GOAWAY_PROTOCOL_ERROR.
      Throws:
      IOException
    • close

      public void close() throws IOException
      Closes this connection. This cancels all open streams and unanswered pings. It closes the underlying input and output streams and shuts down internal executor services.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException