ActiveStreams Class — netty Architecture
Architecture documentation for the ActiveStreams class in DefaultHttp2Connection.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07["ActiveStreams"] c1b91a38_3d50_98cc_116d_1d9e5bc49432["DefaultHttp2Connection.java"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|defined in| c1b91a38_3d50_98cc_116d_1d9e5bc49432 0a31ede2_021b_8033_94dc_7dd6482e61f3["ActiveStreams()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| 0a31ede2_021b_8033_94dc_7dd6482e61f3 cd5dbdca_c253_9014_4710_af50d3d57270["size()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| cd5dbdca_c253_9014_4710_af50d3d57270 069e97e2_761e_738d_cd6f_cdf91fe84e83["activate()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| 069e97e2_761e_738d_cd6f_cdf91fe84e83 d3d8df90_d8af_4c4c_db98_f1ec02127ab8["deactivate()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| d3d8df90_d8af_4c4c_db98_f1ec02127ab8 cb0e7203_72eb_2078_3ea6_493340750840["Http2Stream()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| cb0e7203_72eb_2078_3ea6_493340750840 b4d4da37_92f6_a8ef_c484_357d8cd84ef8["addToActiveStreams()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| b4d4da37_92f6_a8ef_c484_357d8cd84ef8 8adb0879_5971_ccaa_50b1_d48d2463e4b8["removeFromActiveStreams()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| 8adb0879_5971_ccaa_50b1_d48d2463e4b8 ea157506_1684_b850_8aa9_ff162ce821de["allowModifications()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| ea157506_1684_b850_8aa9_ff162ce821de f0f9ba92_f6b6_9036_9ef7_235938810d6c["incrementPendingIterations()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| f0f9ba92_f6b6_9036_9ef7_235938810d6c d59982c4_2840_f395_d369_855f817593af["decrementPendingIterations()"] 0ec3cd81_c4d9_2ddb_582d_5c58407aaa07 -->|method| d59982c4_2840_f395_d369_855f817593af
Relationship Graph
Source Code
codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Connection.java lines 970–1072
private final class ActiveStreams {
private final List<Listener> listeners;
private final Queue<Event> pendingEvents = new ArrayDeque<Event>(4);
private final Set<Http2Stream> streams = new LinkedHashSet<Http2Stream>();
private int pendingIterations;
ActiveStreams(List<Listener> listeners) {
this.listeners = listeners;
}
public int size() {
return streams.size();
}
public void activate(final DefaultStream stream) {
if (allowModifications()) {
addToActiveStreams(stream);
} else {
pendingEvents.add(new Event() {
@Override
public void process() {
addToActiveStreams(stream);
}
});
}
}
public void deactivate(final DefaultStream stream, final Iterator<?> itr) {
if (allowModifications() || itr != null) {
removeFromActiveStreams(stream, itr);
} else {
pendingEvents.add(new Event() {
@Override
public void process() {
removeFromActiveStreams(stream, itr);
}
});
}
}
public Http2Stream forEachActiveStream(Http2StreamVisitor visitor) throws Http2Exception {
incrementPendingIterations();
try {
for (Http2Stream stream : streams) {
if (!visitor.visit(stream)) {
return stream;
}
}
return null;
} finally {
decrementPendingIterations();
}
}
void addToActiveStreams(DefaultStream stream) {
if (streams.add(stream)) {
// Update the number of active streams initiated by the endpoint.
stream.createdBy().numActiveStreams++;
for (int i = 0; i < listeners.size(); i++) {
try {
listeners.get(i).onStreamActive(stream);
} catch (Throwable cause) {
logger.error("Caught Throwable from listener onStreamActive.", cause);
}
}
}
}
void removeFromActiveStreams(DefaultStream stream, Iterator<?> itr) {
if (streams.remove(stream)) {
// Update the number of active streams initiated by the endpoint.
stream.createdBy().numActiveStreams--;
notifyClosed(stream);
}
removeStream(stream, itr);
}
boolean allowModifications() {
return pendingIterations == 0;
}
Source
Frequently Asked Questions
What is the ActiveStreams class?
ActiveStreams is a class in the netty codebase, defined in codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Connection.java.
Where is ActiveStreams defined?
ActiveStreams is defined in codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Connection.java at line 970.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free