Implement a B-tree write scheduler.
Unlike the traditional eight-level HTTP priority scheduler, BTreeScheduler can use any priority scheme as long as it provides a total ordering.
This will be used for implementing WebTransport priority scheme.
PiperOrigin-RevId: 523753533
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 3ef9b8b..6501eb8 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -20,6 +20,7 @@
"balsa/noop_balsa_visitor.h",
"balsa/simple_buffer.h",
"balsa/standard_header_map.h",
+ "common/btree_scheduler.h",
"common/capsule.h",
"common/masque/connect_udp_datagram_payload.h",
"common/platform/api/quiche_bug_tracker.h",
@@ -1024,6 +1025,7 @@
"balsa/header_properties_test.cc",
"balsa/simple_buffer_test.cc",
"binary_http/binary_http_message_test.cc",
+ "common/btree_scheduler_test.cc",
"common/capsule_test.cc",
"common/masque/connect_udp_datagram_payload_test.cc",
"common/platform/api/quiche_file_utils_test.cc",
@@ -1306,6 +1308,7 @@
]
fuzzers_srcs = [
+ "common/btree_scheduler_fuzzer.cc",
"common/structured_headers_fuzzer.cc",
"quic/core/crypto/certificate_view_der_fuzzer.cc",
"quic/core/crypto/certificate_view_pem_fuzzer.cc",