Implement a new API for serializing data into QUIC wire format.
Also rewrite the Capsule serialization logic to use the new API.
I started working on WebTransport over HTTP/2 capsules recently, and realized that the existing code requires too much boilerplate per capsule to be sustainable. This CL is an effort to reduce the cost of adding individual capsules.
PiperOrigin-RevId: 504643109
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 556b344..4d0a1fd 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -57,10 +57,12 @@
"common/quiche_mem_slice_storage.h",
"common/quiche_protocol_flags_list.h",
"common/quiche_random.h",
+ "common/quiche_status_utils.h",
"common/quiche_stream.h",
"common/quiche_text_utils.h",
"common/simple_buffer_allocator.h",
"common/structured_headers.h",
+ "common/wire_serialization.h",
"http2/adapter/data_source.h",
"http2/adapter/event_forwarder.h",
"http2/adapter/header_validator.h",
@@ -1050,6 +1052,7 @@
"common/structured_headers_generated_test.cc",
"common/structured_headers_test.cc",
"common/test_tools/quiche_test_utils_test.cc",
+ "common/wire_serialization_test.cc",
"http2/adapter/event_forwarder_test.cc",
"http2/adapter/header_validator_test.cc",
"http2/adapter/noop_header_validator_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index 22a646d..445844a 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -57,10 +57,12 @@
"src/quiche/common/quiche_mem_slice_storage.h",
"src/quiche/common/quiche_protocol_flags_list.h",
"src/quiche/common/quiche_random.h",
+ "src/quiche/common/quiche_status_utils.h",
"src/quiche/common/quiche_stream.h",
"src/quiche/common/quiche_text_utils.h",
"src/quiche/common/simple_buffer_allocator.h",
"src/quiche/common/structured_headers.h",
+ "src/quiche/common/wire_serialization.h",
"src/quiche/http2/adapter/data_source.h",
"src/quiche/http2/adapter/event_forwarder.h",
"src/quiche/http2/adapter/header_validator.h",
@@ -1050,6 +1052,7 @@
"src/quiche/common/structured_headers_generated_test.cc",
"src/quiche/common/structured_headers_test.cc",
"src/quiche/common/test_tools/quiche_test_utils_test.cc",
+ "src/quiche/common/wire_serialization_test.cc",
"src/quiche/http2/adapter/event_forwarder_test.cc",
"src/quiche/http2/adapter/header_validator_test.cc",
"src/quiche/http2/adapter/noop_header_validator_test.cc",
diff --git a/build/source_list.json b/build/source_list.json
index 495f110..d03d722 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -56,10 +56,12 @@
"quiche/common/quiche_mem_slice_storage.h",
"quiche/common/quiche_protocol_flags_list.h",
"quiche/common/quiche_random.h",
+ "quiche/common/quiche_status_utils.h",
"quiche/common/quiche_stream.h",
"quiche/common/quiche_text_utils.h",
"quiche/common/simple_buffer_allocator.h",
"quiche/common/structured_headers.h",
+ "quiche/common/wire_serialization.h",
"quiche/http2/adapter/data_source.h",
"quiche/http2/adapter/event_forwarder.h",
"quiche/http2/adapter/header_validator.h",
@@ -1049,6 +1051,7 @@
"quiche/common/structured_headers_generated_test.cc",
"quiche/common/structured_headers_test.cc",
"quiche/common/test_tools/quiche_test_utils_test.cc",
+ "quiche/common/wire_serialization_test.cc",
"quiche/http2/adapter/event_forwarder_test.cc",
"quiche/http2/adapter/header_validator_test.cc",
"quiche/http2/adapter/noop_header_validator_test.cc",