public final class Http2Connection extends Object implements Closeable
Many methods in this API are synchronous: the call is completed before the method returns. This is typical for Java but atypical for HTTP/2. This is motivated by exception transparency: an IOException that was triggered by a certain caller can be caught and handled by that caller.
Modifier and Type | Class and Description |
---|---|
static class |
Http2Connection.Builder |
static class |
Http2Connection.Listener
Listener of streams and settings initiated by the peer.
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes this connection.
|
void |
flush() |
Protocol |
getProtocol()
The protocol as selected using ALPN.
|
boolean |
isShutdown() |
int |
maxConcurrentStreams() |
Http2Stream |
newStream(List<Header> requestHeaders,
boolean out)
Returns a new locally-initiated stream.
|
int |
openStreamCount()
Returns the number of
open streams on this connection. |
Http2Stream |
pushStream(int associatedStreamId,
List<Header> requestHeaders,
boolean out)
Returns a new server-initiated stream.
|
void |
setSettings(Settings settings)
Merges
settings into this peer's settings and sends them to the remote peer. |
void |
shutdown(ErrorCode statusCode)
Degrades this connection such that new streams can neither be created locally, nor accepted
from the remote peer.
|
void |
start()
Sends any initial frames and starts reading frames from the remote peer.
|
void |
writeData(int streamId,
boolean outFinished,
okio.Buffer buffer,
long byteCount)
Callers of this method are not thread safe, and sometimes on application threads.
|
public Protocol getProtocol()
public int openStreamCount()
open streams
on this connection.public int maxConcurrentStreams()
public Http2Stream pushStream(int associatedStreamId, List<Header> requestHeaders, boolean out) throws IOException
associatedStreamId
- the stream that triggered the sender to create this stream.out
- true to create an output stream that we can use to send data to the remote peer.
Corresponds to FLAG_FIN
.IOException
public Http2Stream newStream(List<Header> requestHeaders, boolean out) throws IOException
out
- true to create an output stream that we can use to send data to the remote peer.
Corresponds to FLAG_FIN
.IOException
public void writeData(int streamId, boolean outFinished, okio.Buffer buffer, long byteCount) throws IOException
Writes are subject to the write window of the stream and the connection. Until there is a
window sufficient to send byteCount
, the caller will block. For example, a user of
HttpURLConnection
who flushes more bytes to the output stream than the connection's
write window will block.
Zero byteCount
writes are not subject to flow control and will not block. The only
use case for zero byteCount
is closing a flushed output stream.
IOException
public void flush() throws IOException
IOException
public void shutdown(ErrorCode statusCode) throws IOException
IOException
public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
IOException
public void start() throws IOException
Http2Connection.Builder.build()
for all new connections.IOException
public void setSettings(Settings settings) throws IOException
settings
into this peer's settings and sends them to the remote peer.IOException
public boolean isShutdown()
Copyright © 2018. All rights reserved.