Http2Stream Type — netty Architecture
Architecture documentation for the Http2Stream type/interface in Http2Stream.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 9d63ad85_fcd4_e0d3_cb15_677f8533eb55["Http2Stream"] 89418f96_cf5b_9e5d_c690_69b566f295d0["Http2Stream.java"] 9d63ad85_fcd4_e0d3_cb15_677f8533eb55 -->|defined in| 89418f96_cf5b_9e5d_c690_69b566f295d0 style 9d63ad85_fcd4_e0d3_cb15_677f8533eb55 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Stream.java lines 21–174
public interface Http2Stream {
/**
* The allowed states of an HTTP2 stream.
*/
enum State {
IDLE(false, false),
RESERVED_LOCAL(false, false),
RESERVED_REMOTE(false, false),
OPEN(true, true),
HALF_CLOSED_LOCAL(false, true),
HALF_CLOSED_REMOTE(true, false),
CLOSED(false, false);
private final boolean localSideOpen;
private final boolean remoteSideOpen;
State(boolean localSideOpen, boolean remoteSideOpen) {
this.localSideOpen = localSideOpen;
this.remoteSideOpen = remoteSideOpen;
}
/**
* Indicates whether the local side of this stream is open (i.e. the state is either
* {@link State#OPEN} or {@link State#HALF_CLOSED_REMOTE}).
*/
public boolean localSideOpen() {
return localSideOpen;
}
/**
* Indicates whether the remote side of this stream is open (i.e. the state is either
* {@link State#OPEN} or {@link State#HALF_CLOSED_LOCAL}).
*/
public boolean remoteSideOpen() {
return remoteSideOpen;
}
}
/**
* Gets the unique identifier for this stream within the connection.
*/
int id();
/**
* Gets the state of this stream.
*/
State state();
/**
* Opens this stream, making it available via {@link Http2Connection#forEachActiveStream(Http2StreamVisitor)} and
* transition state to:
* <ul>
* <li>{@link State#OPEN} if {@link #state()} is {@link State#IDLE} and {@code halfClosed} is {@code false}.</li>
* <li>{@link State#HALF_CLOSED_LOCAL} if {@link #state()} is {@link State#IDLE} and {@code halfClosed}
* is {@code true} and the stream is local. In this state, {@link #isHeadersSent()} is {@code true}</li>
* <li>{@link State#HALF_CLOSED_REMOTE} if {@link #state()} is {@link State#IDLE} and {@code halfClosed}
* is {@code true} and the stream is remote. In this state, {@link #isHeadersReceived()} is {@code true}</li>
* <li>{@link State#RESERVED_LOCAL} if {@link #state()} is {@link State#HALF_CLOSED_REMOTE}.</li>
* <li>{@link State#RESERVED_REMOTE} if {@link #state()} is {@link State#HALF_CLOSED_LOCAL}.</li>
* </ul>
*/
Http2Stream open(boolean halfClosed) throws Http2Exception;
/**
* Closes the stream.
*/
Http2Stream close();
/**
* Closes the local side of this stream. If this makes the stream closed, the child is closed as
* well.
*/
Http2Stream closeLocalSide();
/**
* Closes the remote side of this stream. If this makes the stream closed, the child is closed
* as well.
*/
Http2Stream closeRemoteSide();
Source
Frequently Asked Questions
What is the Http2Stream type?
Http2Stream is a type/interface in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Stream.java.
Where is Http2Stream defined?
Http2Stream is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Stream.java at line 21.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free