DefaultHttp3Headers Class — netty Architecture
Architecture documentation for the DefaultHttp3Headers class in DefaultHttp3Headers.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 9ea6846f_c0ae_4f16_d33a_3284ee60f4be["DefaultHttp3Headers"] 471ace52_56d1_efc9_f810_e6548706aceb["DefaultHttp3Headers.java"] 9ea6846f_c0ae_4f16_d33a_3284ee60f4be -->|defined in| 471ace52_56d1_efc9_f810_e6548706aceb 48f6b0aa_2594_92e1_67c8_c84592aa7397["DefaultHttp3Headers()"] 9ea6846f_c0ae_4f16_d33a_3284ee60f4be -->|method| 48f6b0aa_2594_92e1_67c8_c84592aa7397 6149bbb1_7c62_1e32_6547_5943aaa57c5a["Http3Headers()"] 9ea6846f_c0ae_4f16_d33a_3284ee60f4be -->|method| 6149bbb1_7c62_1e32_6547_5943aaa57c5a f0e95fd6_5fbe_2fc2_34ff_d73daa609e40["equals()"] 9ea6846f_c0ae_4f16_d33a_3284ee60f4be -->|method| f0e95fd6_5fbe_2fc2_34ff_d73daa609e40 55b22d40_d885_21c7_8189_fb0954f26051["hashCode()"] 9ea6846f_c0ae_4f16_d33a_3284ee60f4be -->|method| 55b22d40_d885_21c7_8189_fb0954f26051 840e6859_0dff_80db_1eb1_bcd6e875dba3["CharSequence()"] 9ea6846f_c0ae_4f16_d33a_3284ee60f4be -->|method| 840e6859_0dff_80db_1eb1_bcd6e875dba3 3f630cd3_950e_3d5d_58b1_05bbc0018d0a["contains()"] 9ea6846f_c0ae_4f16_d33a_3284ee60f4be -->|method| 3f630cd3_950e_3d5d_58b1_05bbc0018d0a d0d45aa9_0777_e38a_8d21_971a9066900f["newHeaderEntry()"] 9ea6846f_c0ae_4f16_d33a_3284ee60f4be -->|method| d0d45aa9_0777_e38a_8d21_971a9066900f
Relationship Graph
Source Code
codec-http3/src/main/java/io/netty/handler/codec/http3/DefaultHttp3Headers.java lines 29–226
public final class DefaultHttp3Headers
extends DefaultHeaders<CharSequence, CharSequence, Http3Headers> implements Http3Headers {
private static final ByteProcessor HTTP3_NAME_VALIDATOR_PROCESSOR = new ByteProcessor() {
@Override
public boolean process(byte value) {
return !isUpperCase(value);
}
};
static final NameValidator<CharSequence> HTTP3_NAME_VALIDATOR = new NameValidator<CharSequence>() {
@Override
public void validateName(@Nullable CharSequence name) {
if (name == null || name.length() == 0) {
throw new Http3HeadersValidationException(String.format("empty headers are not allowed [%s]", name));
}
if (name instanceof AsciiString) {
final int index;
try {
index = ((AsciiString) name).forEachByte(HTTP3_NAME_VALIDATOR_PROCESSOR);
} catch (Http3HeadersValidationException e) {
throw e;
} catch (Throwable t) {
throw new Http3HeadersValidationException(
String.format("unexpected error. invalid header name [%s]", name), t);
}
if (index != -1) {
throw new Http3HeadersValidationException(String.format("invalid header name [%s]", name));
}
} else {
for (int i = 0; i < name.length(); ++i) {
if (isUpperCase(name.charAt(i))) {
throw new Http3HeadersValidationException(String.format("invalid header name [%s]", name));
}
}
}
}
};
private HeaderEntry<CharSequence, CharSequence> firstNonPseudo = head;
/**
* Create a new instance.
* <p>
* Header names will be validated according to
* <a href="https://tools.ietf.org/html/rfc7540">rfc7540</a>.
*/
public DefaultHttp3Headers() {
this(true);
}
/**
* Create a new instance.
* @param validate {@code true} to validate header names according to
* <a href="https://tools.ietf.org/html/rfc7540">rfc7540</a>. {@code false} to not validate header names.
*/
@SuppressWarnings("unchecked")
public DefaultHttp3Headers(boolean validate) {
// Case sensitive compare is used because it is cheaper, and header validation can be used to catch invalid
// headers.
super(CASE_SENSITIVE_HASHER,
CharSequenceValueConverter.INSTANCE,
validate ? HTTP3_NAME_VALIDATOR : NameValidator.NOT_NULL);
}
/**
* Create a new instance.
* @param validate {@code true} to validate header names according to
* <a href="https://tools.ietf.org/html/rfc7540">rfc7540</a>. {@code false} to not validate header names.
* @param arraySizeHint A hint as to how large the hash data structure should be.
* The next positive power of two will be used. An upper bound may be enforced.
*/
@SuppressWarnings("unchecked")
public DefaultHttp3Headers(boolean validate, int arraySizeHint) {
// Case sensitive compare is used because it is cheaper, and header validation can be used to catch invalid
// headers.
super(CASE_SENSITIVE_HASHER,
CharSequenceValueConverter.INSTANCE,
validate ? HTTP3_NAME_VALIDATOR : NameValidator.NOT_NULL,
arraySizeHint);
}
Source
Frequently Asked Questions
What is the DefaultHttp3Headers class?
DefaultHttp3Headers is a class in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/DefaultHttp3Headers.java.
Where is DefaultHttp3Headers defined?
DefaultHttp3Headers is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/DefaultHttp3Headers.java at line 29.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free