HpackBenchmarkUtil Class — netty Architecture
Architecture documentation for the HpackBenchmarkUtil class in HpackBenchmarkUtil.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 73e48a14_435b_d590_a016_bdbacb1ac41e["HpackBenchmarkUtil"] aa158f58_5b6e_4012_82da_885eab56d912["HpackBenchmarkUtil.java"] 73e48a14_435b_d590_a016_bdbacb1ac41e -->|defined in| aa158f58_5b6e_4012_82da_885eab56d912 567a1393_f054_b69c_96d4_5bbffee0c58f["HpackBenchmarkUtil()"] 73e48a14_435b_d590_a016_bdbacb1ac41e -->|method| 567a1393_f054_b69c_96d4_5bbffee0c58f 0a8bcf07_57eb_0a0b_b419_5e7d84385847["headers()"] 73e48a14_435b_d590_a016_bdbacb1ac41e -->|method| 0a8bcf07_57eb_0a0b_b419_5e7d84385847 2d3e8cf3_b618_8911_90c2_ef8ea9120fc9["Http2Headers()"] 73e48a14_435b_d590_a016_bdbacb1ac41e -->|method| 2d3e8cf3_b618_8911_90c2_ef8ea9120fc9
Relationship Graph
Source Code
microbench/src/main/java/io/netty/handler/codec/http2/HpackBenchmarkUtil.java lines 41–116
public final class HpackBenchmarkUtil {
private HpackBenchmarkUtil() {
}
/**
* Internal key used to index a particular set of headers in the map.
*/
private static class HeadersKey {
final HpackHeadersSize size;
final boolean limitToAscii;
HeadersKey(HpackHeadersSize size, boolean limitToAscii) {
this.size = size;
this.limitToAscii = limitToAscii;
}
List<HpackHeader> newHeaders() {
return size.newHeaders(limitToAscii);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
HeadersKey that = (HeadersKey) o;
if (limitToAscii != that.limitToAscii) {
return false;
}
return size == that.size;
}
@Override
public int hashCode() {
int result = size.hashCode();
result = 31 * result + (limitToAscii ? 1 : 0);
return result;
}
}
private static final Map<HeadersKey, List<HpackHeader>> headersMap;
static {
HpackHeadersSize[] sizes = HpackHeadersSize.values();
headersMap = new HashMap<HeadersKey, List<HpackHeader>>(sizes.length * 2);
for (HpackHeadersSize size : sizes) {
HeadersKey key = new HeadersKey(size, true);
headersMap.put(key, key.newHeaders());
key = new HeadersKey(size, false);
headersMap.put(key, key.newHeaders());
}
}
/**
* Gets headers for the given size and whether the key/values should be limited to ASCII.
*/
static List<HpackHeader> headers(HpackHeadersSize size, boolean limitToAscii) {
return headersMap.get(new HeadersKey(size, limitToAscii));
}
static Http2Headers http2Headers(HpackHeadersSize size, boolean limitToAscii) {
List<HpackHeader> hpackHeaders = headersMap.get(new HeadersKey(size, limitToAscii));
Http2Headers http2Headers = new DefaultHttp2Headers(false);
for (int i = 0; i < hpackHeaders.size(); ++i) {
HpackHeader hpackHeader = hpackHeaders.get(i);
http2Headers.add(hpackHeader.name, hpackHeader.value);
}
return http2Headers;
}
}
Source
Frequently Asked Questions
What is the HpackBenchmarkUtil class?
HpackBenchmarkUtil is a class in the netty codebase, defined in microbench/src/main/java/io/netty/handler/codec/http2/HpackBenchmarkUtil.java.
Where is HpackBenchmarkUtil defined?
HpackBenchmarkUtil is defined in microbench/src/main/java/io/netty/handler/codec/http2/HpackBenchmarkUtil.java at line 41.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free