1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-04-18 17:24:03 +03:00

Re-sync with internal repository (#372)

The internal and external repositories are out of sync. This Pull Request attempts to brings them back in sync by patching the GitHub repository. Please carefully review this patch. You must disable ShipIt for your project in order to merge this pull request. DO NOT IMPORT this pull request. Instead, merge it directly on GitHub using the MERGE BUTTON. Re-enable ShipIt after merging.
This commit is contained in:
Facebook Community Bot 2025-02-13 10:04:13 -08:00 committed by GitHub
parent 598b6f245d
commit c526f93d0e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
60 changed files with 4916 additions and 0 deletions

43
quic/BUCK Normal file
View File

@ -0,0 +1,43 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "constants",
srcs = [
"QuicConstants.cpp",
],
headers = [
"QuicConstants.h",
],
deps = [
"//folly/lang:assume",
],
exported_deps = [
"//folly/chrono:clock",
"//folly/io:iobuf",
"//quic/common/third-party:better_enums",
],
)
mvfst_cpp_library(
name = "exception",
srcs = [
"QuicException.cpp",
],
headers = [
"QuicException.h",
],
deps = [
"//fizz/record:record",
],
exported_deps = [
":constants",
"//folly:range",
"//quic/common:optional",
"//quic/common:variant",
],
external_deps = [
"glog",
],
)

203
quic/api/BUCK Normal file
View File

@ -0,0 +1,203 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "quic_batch_writer",
srcs = [
"QuicBatchWriter.cpp",
"QuicBatchWriterFactory.cpp",
"QuicGsoBatchWriters.cpp",
],
headers = [
"QuicBatchWriter.h",
"QuicBatchWriterFactory.h",
"QuicGsoBatchWriters.h",
],
deps = [
"//quic/common:buf_accessor",
],
exported_deps = [
"//folly:network_address",
"//folly:portability",
"//folly/io:iobuf",
"//quic:constants",
"//quic/common/events:eventbase",
"//quic/common/udpsocket:quic_async_udp_socket",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "quic_callbacks",
srcs = [
],
headers = [
"QuicCallbacks.h",
],
deps = [
],
exported_deps = [
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "transport",
srcs = [
"QuicTransportBase.cpp",
],
headers = [
"QuicSocket.h",
"QuicTransportBase.h",
],
deps = [
":loop_detector_callback",
":quic_batch_writer",
":transport_helpers",
"//folly:chrono",
"//folly:scope_guard",
"//quic/common:time_util",
"//quic/congestion_control:pacer",
"//quic/logging:qlogger_constants",
"//quic/loss:loss",
"//quic/state:pacing_functions",
"//quic/state:simple_frame_functions",
"//quic/state:state_functions",
"//quic/state:stream_functions",
],
exported_deps = [
":transport_lite",
"//folly:exception_wrapper",
"//folly:maybe_managed_ptr",
"//folly:portability",
"//folly/io:iobuf",
"//quic:constants",
"//quic:exception",
"//quic/codec:types",
"//quic/common:network_data",
"//quic/common:optional",
"//quic/common:small_collections",
"//quic/common/events:eventbase",
"//quic/common/events:quic_timer",
"//quic/common/udpsocket:quic_async_udp_socket",
"//quic/congestion_control:bandwidth",
"//quic/congestion_control:congestion_controller_factory",
"//quic/congestion_control:copa",
"//quic/congestion_control:cubic",
"//quic/congestion_control:newreno",
"//quic/observer:socket_observer_container",
"//quic/observer:socket_observer_types",
"//quic/state:quic_connection_stats",
"//quic/state:quic_priority_queue",
"//quic/state:quic_state_machine",
"//quic/state:quic_stream_utilities",
"//quic/state:retransmission_policy",
],
)
mvfst_cpp_library(
name = "transport_lite",
srcs = [
"QuicTransportBaseLite.cpp",
],
headers = [
"QuicSocketLite.h",
"QuicTransportBaseLite.h",
],
deps = [
":loop_detector_callback",
"//quic/congestion_control:congestion_controller_factory",
"//quic/congestion_control:ecn_l4s_tracker",
"//quic/congestion_control:pacer",
"//quic/flowcontrol:flow_control",
"//quic/loss:loss",
"//quic/state:pacing_functions",
"//quic/state:stream_functions",
"//quic/state/stream:stream",
],
exported_deps = [
":quic_callbacks",
":transport_helpers",
"//folly:maybe_managed_ptr",
"//folly/io/async:async_transport_certificate",
"//quic:exception",
"//quic/codec:types",
"//quic/common:looper",
"//quic/common/udpsocket:quic_async_udp_socket",
"//quic/handshake:transport_parameters",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "transport_helpers",
srcs = [
"IoBufQuicBatch.cpp",
"QuicPacketScheduler.cpp",
"QuicTransportFunctions.cpp",
],
headers = [
"IoBufQuicBatch.h",
"QuicPacketScheduler.h",
"QuicTransportFunctions.h",
],
deps = [
"//folly/tracing:static_tracepoint",
"//quic/common:buf_accessor",
"//quic/common:socket_util",
"//quic/happyeyeballs:happyeyeballs",
"//quic/state:ack_frequency_functions",
"//quic/state:ack_handler",
"//quic/state:simple_frame_functions",
],
exported_deps = [
":quic_batch_writer",
"//folly:expected",
"//folly/lang:assume",
"//quic:constants",
"//quic:exception",
"//quic/client:state_and_handshake",
"//quic/codec:codec",
"//quic/codec:pktbuilder",
"//quic/codec:pktrebuilder",
"//quic/codec:types",
"//quic/common/udpsocket:quic_async_udp_socket",
"//quic/flowcontrol:flow_control",
"//quic/handshake:transport_parameters",
"//quic/state:quic_state_machine",
"//quic/state:state_functions",
"//quic/state:stats_callback",
"//quic/state:stream_functions",
],
exported_external_deps = [
"boost",
],
)
mvfst_cpp_library(
name = "loop_detector_callback",
headers = ["LoopDetectorCallback.h"],
exported_deps = [
"//quic:constants",
],
)
mvfst_cpp_library(
name = "stream_async_transport",
srcs = [
"QuicStreamAsyncTransport.cpp",
],
headers = [
"QuicStreamAsyncTransport.h",
],
deps = [
"//folly/io:iobuf",
"//quic/common/events:folly_eventbase",
],
exported_deps = [
":transport",
"//folly/io/async:async_transport",
"//quic/common/events:eventbase",
],
)

241
quic/api/test/BUCK Normal file
View File

@ -0,0 +1,241 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"MockQuicSocket.h",
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic:exception",
"//quic/api:loop_detector_callback",
"//quic/api:transport",
"//quic/codec:types",
"//quic/common:network_data",
"//quic/common/events:folly_eventbase",
"//quic/common/events:quic_timer",
"//quic/dsr:types",
"//quic/server:server",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_test(
name = "QuicSocketTest",
srcs = [
"QuicSocketTest.cpp",
],
deps = [
":mocks",
"//quic/api:transport",
],
)
mvfst_cpp_test(
name = "QuicTransportTest",
srcs = [
"QuicTransportTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
":mocks",
":test_quic_transport",
"//folly:random",
"//folly/io:iobuf",
"//quic:constants",
"//quic/api:transport",
"//quic/api:transport_helpers",
"//quic/common:buf_util",
"//quic/common/events:highres_quic_timer",
"//quic/common/test:test_utils",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/congestion_control:ecn_l4s_tracker",
"//quic/congestion_control:static_cwnd_congestion_controller",
"//quic/dsr:types",
"//quic/dsr/test:mocks",
"//quic/handshake/test:mocks",
"//quic/logging/test:mocks",
"//quic/server/state:server",
"//quic/state:stream_functions",
"//quic/state/stream:stream",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "QuicTransportBaseTest",
srcs = [
"QuicTransportBaseTest.cpp",
],
supports_static_listing = False,
deps = [
":mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/api:transport",
"//quic/codec:types",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_utils",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
"//quic/state:datagram_handler",
"//quic/state:quic_stream_utilities",
"//quic/state:stream_functions",
"//quic/state/stream:stream",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "QuicTransportFunctionsTest",
srcs = [
"QuicTransportFunctionsTest.cpp",
],
deps = [
":mocks",
"//folly:range",
"//quic/api:transport_helpers",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_utils",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/logging:file_qlogger",
"//quic/logging:qlogger_constants",
"//quic/server/state:server",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "QuicPacketSchedulerTest",
srcs = [
"QuicPacketSchedulerTest.cpp",
],
supports_static_listing = False,
deps = [
":mocks",
"//folly/portability:gtest",
"//quic/api:transport_helpers",
"//quic/client:state_and_handshake",
"//quic/codec:pktbuilder",
"//quic/codec/test:mocks",
"//quic/common/test:test_utils",
"//quic/dsr:types",
"//quic/dsr/test:mocks",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
"//quic/state:stream_functions",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "IoBufQuicBatchTest",
srcs = [
"IoBufQuicBatchTest.cpp",
],
deps = [
"//quic/api:transport_helpers",
"//quic/client:state_and_handshake",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_utils",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_test(
name = "QuicBatchWriterTest",
srcs = [
"QuicBatchWriterTest.cpp",
],
supports_static_listing = False,
deps = [
"//quic/api:quic_batch_writer",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_utils",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
],
)
mvfst_cpp_test(
name = "QuicStreamAsyncTransportTest",
srcs = [
"QuicStreamAsyncTransportTest.cpp",
],
deps = [
":mocks",
"//folly:move_wrapper",
"//folly/container:f14_hash",
"//folly/futures:core",
"//folly/io/async/test:mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/api:stream_async_transport",
"//quic/client:client",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_client_utils",
"//quic/common/test:test_utils",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/server:server",
"//quic/server/test:mocks",
],
)
mvfst_cpp_test(
name = "QuicTypedTransportTest",
srcs = [
"QuicTypedTransportTest.cpp",
],
supports_static_listing = False,
deps = [
"fbsource//third-party/googletest:gmock",
":mocks",
":quic_typed_transport_test_util",
"//quic/codec:types",
"//quic/congestion_control:static_cwnd_congestion_controller",
"//quic/fizz/client/test:quic_client_transport_test_util",
"//quic/server/test:quic_server_transport_test_util",
"//quic/state:ack_event",
"//quic/state:outstanding_packet",
"//quic/state/test:mocks",
],
)
mvfst_cpp_library(
name = "quic_typed_transport_test_util",
headers = [
"QuicTypedTransportTestUtil.h",
],
exported_deps = [
"//quic/api:transport",
"//quic/common/test:test_packet_builders",
"//quic/common/test:test_utils",
"//quic/state:quic_state_machine",
"//quic/state:state_functions",
],
)
mvfst_cpp_library(
name = "test_quic_transport",
headers = [
"TestQuicTransport.h",
],
exported_deps = [
"//quic/api:transport",
"//quic/api:transport_helpers",
"//quic/common/test:test_utils",
"//quic/dsr/frontend:write_functions",
"//quic/fizz/server/handshake:fizz_server_handshake",
],
)

136
quic/client/BUCK Normal file
View File

@ -0,0 +1,136 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "client",
srcs = [
"QuicClientTransport.cpp",
],
headers = [
"QuicClientTransport.h",
],
exported_deps = [
":client_lite",
"//quic/api:transport",
],
)
mvfst_cpp_library(
name = "client_lite",
srcs = [
"QuicClientTransportLite.cpp",
],
headers = [
"QuicClientTransportLite.h",
],
deps = [
":client_extension",
"//folly/portability:sockets",
"//quic:constants",
"//quic/api:loop_detector_callback",
"//quic/api:transport_helpers",
"//quic/congestion_control:congestion_controller_factory",
"//quic/flowcontrol:flow_control",
"//quic/handshake:handshake",
"//quic/happyeyeballs:happyeyeballs",
"//quic/logging:qlogger_constants",
"//quic/loss:loss",
"//quic/state:ack_handler",
"//quic/state:datagram_handler",
"//quic/state:pacing_functions",
"//quic/state:simple_frame_functions",
"//quic/state/stream:stream",
],
exported_deps = [
":state_and_handshake",
"//folly:network_address",
"//folly:random",
"//folly/io:socket_option_map",
"//folly/net:net_ops",
"//quic/api:transport_lite",
"//quic/common:buf_accessor",
"//quic/common:buf_util",
"//quic/common/udpsocket:quic_async_udp_socket",
"//quic/state:quic_connection_stats",
],
)
mvfst_cpp_library(
name = "state_and_handshake",
srcs = [
"handshake/ClientHandshake.cpp",
"state/ClientStateMachine.cpp",
],
headers = [
"handshake/ClientHandshake.h",
"handshake/ClientHandshakeFactory.h",
"state/ClientStateMachine.h",
],
deps = [
":cached_server_tp",
":client_extension",
"//quic/codec:decode",
"//quic/codec:types",
"//quic/common:time_util",
"//quic/congestion_control:congestion_controller_factory",
"//quic/loss:loss",
"//quic/state:quic_stream_utilities",
"//quic/state:stream_functions",
],
exported_deps = [
"//folly:exception_wrapper",
"//folly/io:iobuf",
"//folly/io/async:async_transport_certificate",
"//folly/io/async:delayed_destruction",
"//quic:constants",
"//quic:exception",
"//quic/common:network_data",
"//quic/common/udpsocket:quic_async_udp_socket",
"//quic/congestion_control:cubic",
"//quic/flowcontrol:flow_control",
"//quic/handshake:aead",
"//quic/handshake:handshake",
"//quic/handshake:transport_parameters",
"//quic/state:quic_state_machine",
"//quic/state:state_functions",
],
)
mvfst_cpp_library(
name = "client_extension",
headers = [
"handshake/ClientTransportParametersExtension.h",
],
exported_deps = [
"//quic/handshake:transport_parameters",
],
)
mvfst_cpp_library(
name = "cached_server_tp",
headers = [
"handshake/CachedServerTransportParameters.h",
],
exported_deps = [
"//quic:constants",
],
)
mvfst_cpp_library(
name = "client_async_transport",
srcs = [
"QuicClientAsyncTransport.cpp",
],
headers = [
"QuicClientAsyncTransport.h",
],
deps = [
"//folly:conv",
"//folly/experimental/symbolizer:symbolizer",
],
exported_deps = [
"//quic/api:stream_async_transport",
"//quic/client:client",
],
)

View File

@ -0,0 +1,31 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "connector",
srcs = [
"QuicConnector.cpp",
],
headers = [
"QuicConnector.h",
],
deps = [
"//folly/io/async:async_ssl_socket",
"//folly/io/async:async_udp_socket",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/congestion_control:congestion_controller_factory",
"//quic/fizz/client/handshake:fizz_client_handshake",
],
exported_deps = [
"//fizz/client:async_fizz_client",
"//folly/io:socket_option_map",
"//quic/api:loop_detector_callback",
"//quic/api:transport",
"//quic/client:client",
"//quic/common:time_util",
"//quic/common/events:folly_eventbase",
"//quic/fizz/client/handshake:psk_cache",
"//quic/logging:qlogger",
],
)

81
quic/client/test/BUCK Normal file
View File

@ -0,0 +1,81 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/client:cached_server_tp",
"//quic/client:client",
"//quic/client:state_and_handshake",
"//quic/client/connector:connector",
"//quic/common/events:folly_eventbase",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/handshake:handshake",
"//quic/handshake:transport_parameters",
],
)
mvfst_cpp_test(
name = "ClientStateMachineTest",
srcs = [
"ClientStateMachineTest.cpp",
],
supports_static_listing = False,
deps = [
":mocks",
"//quic/api:transport_helpers",
"//quic/api/test:mocks",
"//quic/client:cached_server_tp",
"//quic/client:state_and_handshake",
"//quic/common/events:folly_eventbase",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/handshake:handshake",
"//quic/handshake:transport_parameters",
],
)
mvfst_cpp_test(
name = "QuicConnectorTest",
srcs = [
"QuicConnectorTest.cpp",
],
deps = [
":mocks",
"//quic/client/connector:connector",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_client_utils",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/fizz/client/handshake:fizz_client_handshake",
],
)
mvfst_cpp_library(
name = "QuicClientTransportMock",
headers = [
"QuicClientTransportMock.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/client:client",
],
)
mvfst_cpp_test(
name = "QuicClientTransportTest",
srcs = [
"QuicClientTransportTest.cpp",
],
deps = [
"//quic/client:client",
"//quic/client/test:mocks",
"//quic/common/events/test:QuicEventBaseMock",
"//quic/common/test:test_utils",
"//quic/common/udpsocket/test:QuicAsyncUDPSocketMock",
],
)

204
quic/codec/BUCK Normal file
View File

@ -0,0 +1,204 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "types",
srcs = [
"DefaultConnectionIdAlgo.cpp",
"QuicConnectionId.cpp",
"QuicInteger.cpp",
"Types.cpp",
],
headers = [
"ConnectionIdAlgo.h",
"DefaultConnectionIdAlgo.h",
"QuicConnectionId.h",
"QuicInteger.h",
"Types.h",
],
deps = [
"//folly:random",
],
exported_deps = [
":packet_number",
"//folly:conv",
"//folly:expected",
"//folly:network_address",
"//folly:string",
"//folly/hash:hash",
"//folly/io:iobuf",
"//folly/lang:bits",
"//quic:constants",
"//quic:exception",
"//quic/common:buf_util",
"//quic/common:circular_deque",
"//quic/common:interval_set",
"//quic/common:network_data",
"//quic/common:optional",
"//quic/common:small_collections",
"//quic/common:variant",
],
external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "packet_number",
srcs = [
"PacketNumber.cpp",
],
headers = [
"PacketNumber.h",
],
deps = [
"//folly:conv",
"//folly/lang:bits",
"//quic:constants",
"//quic:exception",
],
external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "packet_number_cipher",
srcs = [
"PacketNumberCipher.cpp",
],
headers = [
"PacketNumberCipher.h",
],
deps = [
":decode",
":types",
],
exported_deps = [
"//folly/io:iobuf",
"//quic/common:buf_util",
"//quic/common:optional",
],
)
mvfst_cpp_library(
name = "decode",
srcs = [
"Decode.cpp",
],
headers = [
"Decode.h",
],
compiler_flags = [
"-fstrict-aliasing",
],
deps = [
"//folly:string",
"//quic:exception",
],
exported_deps = [
":packet_number",
":types",
"//folly/io:iobuf",
"//quic:constants",
"//quic/state:transport_settings",
],
)
mvfst_cpp_library(
name = "pktbuilder",
srcs = [
"QuicPacketBuilder.cpp",
],
headers = [
"QuicPacketBuilder.h",
],
compiler_flags = [
"-fstrict-aliasing",
],
deps = [
"//folly:random",
"//folly/io:iobuf",
],
exported_deps = [
":packet_number",
":types",
"//folly:portability",
"//quic/common:buf_accessor",
"//quic/common:buf_util",
"//quic/handshake:handshake",
],
)
mvfst_cpp_library(
name = "pktrebuilder",
srcs = [
"QuicPacketRebuilder.cpp",
],
headers = [
"QuicPacketRebuilder.h",
],
deps = [
":codec",
"//quic/flowcontrol:flow_control",
"//quic/state:simple_frame_functions",
"//quic/state:state_functions",
"//quic/state:stream_functions",
],
exported_deps = [
":pktbuilder",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "header_codec",
srcs = [
"QuicHeaderCodec.cpp",
],
headers = [
"QuicHeaderCodec.h",
],
deps = [
":decode",
"//quic:exception",
],
exported_deps = [
":packet_number",
":types",
"//quic/common:optional",
],
)
mvfst_cpp_library(
name = "codec",
srcs = [
"QuicReadCodec.cpp",
"QuicWriteCodec.cpp",
],
headers = [
"QuicReadCodec.h",
"QuicWriteCodec.h",
],
deps = [
"//folly/io:iobuf",
"//quic:exception",
],
exported_deps = [
":decode",
":packet_number",
":packet_number_cipher",
":pktbuilder",
":types",
"//quic:constants",
"//quic/common:buf_util",
"//quic/common:circular_deque",
"//quic/common:interval_set",
"//quic/common:optional",
"//quic/handshake:aead",
"//quic/state:ack_states",
"//quic/state:stats_callback",
"//quic/state:transport_settings",
],
)

211
quic/codec/test/BUCK Normal file
View File

@ -0,0 +1,211 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/codec:pktbuilder",
"//quic/common/test:test_utils",
],
)
mvfst_cpp_test(
name = "QuicHeaderCodec",
srcs = [
"QuicHeaderCodecTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic:exception",
"//quic/codec:header_codec",
"//quic/common:optional",
"//quic/common/test:test_utils",
],
)
mvfst_cpp_test(
name = "QuicReadCodecTests",
srcs = [
"QuicReadCodecTest.cpp",
],
deps = [
"//folly/io:iobuf",
"//folly/portability:gtest",
"//quic:exception",
"//quic/codec:codec",
"//quic/common/test:test_utils",
"//quic/fizz/handshake:fizz_handshake",
],
)
mvfst_cpp_test(
name = "QuicWriteCodecTests",
srcs = [
"QuicWriteCodecTest.cpp",
],
compiler_flags = [
"-ftemplate-backtrace-limit=0",
],
supports_static_listing = False,
deps = [
":mocks",
"//folly:random",
"//folly/io:iobuf",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic:constants",
"//quic:exception",
"//quic/codec:codec",
"//quic/codec:decode",
"//quic/codec:types",
"//quic/common:buf_util",
"//quic/common:circular_deque",
"//quic/common/test:test_utils",
"//quic/state:transport_settings",
],
)
mvfst_cpp_test(
name = "TypesTests",
srcs = [
"TypesTest.cpp",
],
deps = [
"//folly:string",
"//folly/container:array",
"//folly/io:iobuf",
"//folly/portability:gtest",
"//quic:exception",
"//quic/codec:decode",
"//quic/codec:types",
"//quic/common/test:test_utils",
],
)
mvfst_cpp_test(
name = "PacketNumberTest",
srcs = [
"PacketNumberTest.cpp",
],
supports_static_listing = False,
deps = [
"//folly/portability:gtest",
"//quic/codec:packet_number",
"//quic/codec:types",
],
)
mvfst_cpp_test(
name = "DecodeTests",
srcs = [
"DecodeTest.cpp",
],
deps = [
"//folly:random",
"//folly/container:array",
"//folly/io:iobuf",
"//folly/portability:gtest",
"//quic/codec:codec",
"//quic/codec:decode",
"//quic/codec:types",
"//quic/common/test:test_utils",
],
)
mvfst_cpp_test(
name = "DefaultConnectionIdAlgoTest",
srcs = [
"DefaultConnectionIdAlgoTest.cpp",
],
deps = [
"//folly:random",
"//folly/portability:gtest",
"//quic/codec:types",
],
)
mvfst_cpp_test(
name = "QuicConnectionIdTest",
srcs = [
"QuicConnectionIdTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/codec:types",
],
)
mvfst_cpp_test(
name = "QuicPacketBuilderTest",
srcs = [
"QuicPacketBuilderTest.cpp",
],
supports_static_listing = False,
deps = [
":mocks",
"//folly:random",
"//folly/io:iobuf",
"//folly/portability:gtest",
"//quic/codec:codec",
"//quic/codec:pktbuilder",
"//quic/codec:types",
"//quic/common/test:test_utils",
"//quic/fizz/handshake:fizz_handshake",
"//quic/handshake:handshake",
],
)
mvfst_cpp_test(
name = "QuicPacketRebuilderTest",
srcs = [
"QuicPacketRebuilderTest.cpp",
],
deps = [
":mocks",
"//folly/portability:gtest",
"//quic/codec:codec",
"//quic/codec:pktbuilder",
"//quic/codec:pktrebuilder",
"//quic/common/test:test_utils",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
"//quic/state:quic_state_machine",
"//quic/state:state_functions",
"//quic/state:stream_functions",
"//quic/state/stream:stream",
],
)
mvfst_cpp_test(
name = "QuicIntegerTest",
srcs = [
"QuicIntegerTest.cpp",
],
supports_static_listing = False,
deps = [
"//folly:expected",
"//folly:string",
"//folly/io:iobuf",
"//folly/portability:gtest",
"//quic:exception",
"//quic/codec:types",
"//quic/common:optional",
],
)
mvfst_cpp_test(
name = "server_connection_id_params_test",
srcs = [
"ServerConnectionIdParamsTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/codec:types",
],
)

198
quic/common/BUCK Normal file
View File

@ -0,0 +1,198 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "interval_set",
headers = [
"IntervalSet.h",
"IntervalSet-inl.h",
],
exported_deps = [
":optional",
"//folly:likely",
],
)
mvfst_cpp_library(
name = "looper",
srcs = [
"FunctionLooper.cpp",
],
headers = [
"FunctionLooper.h",
],
deps = [
"//folly:scope_guard",
],
exported_deps = [
":optional",
"//folly:function",
"//folly/io/async:delayed_destruction",
"//quic:constants",
"//quic/common/events:eventbase",
"//quic/common/events:quic_timer",
],
external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "variant",
headers = [
"Variant.h",
],
exported_deps = [
],
)
mvfst_cpp_library(
name = "buf_accessor",
srcs = [
"BufAccessor.cpp",
],
headers = [
"BufAccessor.h",
],
exported_deps = [
"//folly/io:iobuf",
"//quic:constants",
],
)
mvfst_cpp_library(
name = "buf_util",
srcs = [
"BufUtil.cpp",
"ChainedByteRange.cpp",
],
headers = [
"BufUtil.h",
"ChainedByteRange.h",
],
exported_deps = [
"//folly:range",
"//folly/io:iobuf",
"//quic:constants",
],
)
mvfst_cpp_library(
name = "enum_array",
headers = [
"EnumArray.h",
],
exported_deps = [
"//folly:portability",
],
exported_external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "socket_util",
headers = [
"SocketUtil.h",
],
exported_deps = [
"//folly/io:socket_option_map",
"//folly/net:net_ops",
],
)
mvfst_cpp_library(
name = "small_collections",
headers = [
"SmallCollections.h",
],
exported_deps = [
"//folly:small_vector",
"//folly/container:heap_vector_types",
],
)
mvfst_cpp_library(
name = "circular_deque",
headers = [
"CircularDeque.h",
"CircularDeque-inl.h",
],
exported_deps = [
"//folly:likely",
"//folly:portability",
"//folly:scope_guard",
"//folly/memory:malloc",
],
exported_external_deps = [
"boost",
"glog",
],
)
mvfst_cpp_library(
name = "network_data",
headers = [
"NetworkData.h",
],
exported_deps = [
":buf_util",
":optional",
":time_points",
"//quic:constants",
],
)
mvfst_cpp_library(
name = "time_points",
headers = [
"TimePoints.h",
],
exported_deps = [
":optional",
"//quic:constants",
],
)
mvfst_cpp_library(
name = "time_util",
headers = [
"TimeUtil.h",
],
exported_deps = [
"//folly:traits",
"//quic:constants",
],
)
mvfst_cpp_library(
name = "transport_knobs",
srcs = [
"TransportKnobs.cpp",
],
headers = [
"TransportKnobs.h",
],
deps = [
"//folly:dynamic",
"//quic:constants",
],
exported_deps = [
":optional",
],
external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "optional",
headers = [
"Optional.h",
],
exported_deps = [
"//folly:optional",
"//quic/common/third-party:tiny_optional",
],
)

78
quic/common/events/BUCK Normal file
View File

@ -0,0 +1,78 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
load("@fbsource//tools/target_determinator/macros:ci.bzl", "ci")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "eventbase",
headers = [
"QuicEventBase.h",
],
exported_deps = [
"//folly:function",
"//folly:glog",
],
)
mvfst_cpp_library(
name = "quic_timer",
srcs = [
],
headers = [
"QuicTimer.h",
],
exported_deps = [
":eventbase",
"//folly/io/async:delayed_destruction",
],
)
mvfst_cpp_library(
name = "folly_eventbase",
srcs = [
"FollyQuicEventBase.cpp",
],
headers = [
"FollyQuicEventBase.h",
],
exported_deps = [
":eventbase",
"//folly/io/async:async_base",
"//folly/io/async:async_base_fwd",
],
)
mvfst_cpp_library(
name = "highres_quic_timer",
srcs = [
"HighResQuicTimer.cpp",
],
headers = [
"HighResQuicTimer.h",
],
exported_deps = [
":quic_timer",
"//folly/io/async:async_base",
"//folly/io/async:timerfd",
],
)
mvfst_cpp_library(
name = "libev_eventbase",
srcs = [
"LibevQuicEventBase.cpp",
],
headers = [
"LibevQuicEventBase.h",
],
labels = ci.labels(ci.remove(ci.windows())),
exported_deps = [
":eventbase",
":quic_timer",
"//folly:glog",
"//folly:intrusive_list",
],
exported_external_deps = [
"libev",
],
)

View File

@ -0,0 +1,56 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
load("@fbsource//tools/target_determinator/macros:ci.bzl", "ci")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "QuicEventBaseTestBase",
headers = [
"QuicEventBaseTestBase.h",
],
exported_deps = [
"//folly/portability:gtest",
"//quic/common/events:eventbase",
],
)
mvfst_cpp_test(
name = "FollyQuicEventBaseTest",
srcs = [
"FollyQuicEventBaseTest.cpp",
],
supports_static_listing = False,
deps = [
":QuicEventBaseTestBase",
"//folly/portability:gtest",
"//quic/common/events:folly_eventbase",
],
)
mvfst_cpp_test(
name = "LibevQuicEventBaseTest",
srcs = [
"LibevQuicEventBaseTest.cpp",
],
labels = ci.labels(ci.remove(ci.windows())),
supports_static_listing = False,
deps = [
":QuicEventBaseTestBase",
"//folly/portability:gtest",
"//quic/common/events:libev_eventbase",
],
external_deps = [
"libev",
],
)
mvfst_cpp_library(
name = "QuicEventBaseMock",
headers = [
"QuicEventBaseMock.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/common/events:eventbase",
],
)

203
quic/common/test/BUCK Normal file
View File

@ -0,0 +1,203 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_benchmark", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_test(
name = "IntervalSetTest",
srcs = [
"IntervalSetTest.cpp",
],
deps = [
"//quic/common:interval_set",
],
)
mvfst_cpp_test(
name = "FunctionLooperTest",
srcs = [
"FunctionLooperTest.cpp",
],
deps = [
"//quic/common:looper",
"//quic/common/events:folly_eventbase",
"//quic/common/events:highres_quic_timer",
],
)
mvfst_cpp_test(
name = "VariantTest",
srcs = [
"VariantTest.cpp",
],
deps = [
"//quic/common:variant",
],
)
mvfst_cpp_test(
name = "BufAccessorTest",
srcs = [
"BufAccessorTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/common:buf_accessor",
],
)
mvfst_cpp_test(
name = "BufUtilTest",
srcs = [
"BufUtilTest.cpp",
],
deps = [
"//folly:string",
"//folly/io:iobuf",
"//quic/common:buf_util",
],
)
mvfst_cpp_test(
name = "ChainedByteRangeTest",
srcs = [
"ChainedByteRangeTest.cpp",
],
deps = [
"//folly:string",
"//folly/io:iobuf",
"//quic/common:buf_util",
],
)
mvfst_cpp_library(
name = "test_client_utils",
headers = [
"TestClientUtils.h",
],
exported_deps = [
"//fizz/protocol:certificate_verifier",
],
)
mvfst_cpp_library(
name = "test_packet_builders",
srcs = [
"TestPacketBuilders.cpp",
],
headers = [
"TestPacketBuilders.h",
],
deps = [
"//quic/state:state_functions",
],
exported_deps = [
"//quic/api:quic_batch_writer",
"//quic/codec:pktbuilder",
"//quic/codec:types",
"//quic/state:ack_states",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "test_utils",
srcs = [
"TestUtils.cpp",
],
headers = [
"TestUtils.h",
],
deps = [
"//fizz/backend:openssl",
"//fizz/crypto/test:TestUtil",
"//fizz/protocol/clock/test:mock_clock",
"//fizz/protocol/test:mocks",
"//quic/api:transport_helpers",
"//quic/fizz/server/handshake:handshake_app_token",
"//quic/server/handshake:stateless_reset_generator",
"//quic/state:ack_event",
"//quic/state:loss_state",
"//quic/state:outstanding_packet",
"//quic/state/stream:stream",
],
exported_deps = [
":test_packet_builders",
"//fizz/client:fizz_client_context",
"//fizz/server:fizz_server_context",
"//quic/api:quic_batch_writer",
"//quic/codec:pktbuilder",
"//quic/codec:types",
"//quic/common:buf_util",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/fizz/client/handshake:psk_cache",
"//quic/fizz/handshake:fizz_handshake",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/handshake/test:mocks",
"//quic/logging:file_qlogger",
"//quic/server/state:server",
"//quic/state:ack_states",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_test(
name = "TimeUtilTest",
srcs = [
"TimeUtilTest.cpp",
],
deps = [
"//quic/common:time_util",
],
)
mvfst_cpp_test(
name = "TransportKnobsTest",
srcs = [
"TransportKnobsTest.cpp",
],
deps = [
"//folly:format",
"//folly/portability:gtest",
"//quic:constants",
"//quic/common:transport_knobs",
],
)
mvfst_cpp_test(
name = "CircularDequeTest",
srcs = [
"CircularDequeTest.cpp",
],
deps = [
":test_utils",
"//folly:random",
"//quic/common:circular_deque",
],
)
mvfst_cpp_benchmark(
name = "CircularDequeBench",
srcs = [
"CircularDequeBench.cpp",
],
headers = [],
deps = [
"//folly:benchmark",
"//quic/common:circular_deque",
"//quic/common/test:test_utils",
],
)
mvfst_cpp_test(
name = "SocketUtilTest",
srcs = [
"SocketUtilTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
"//folly/portability:gtest",
"//quic/common:socket_util",
"//quic/common/events:folly_eventbase",
"//quic/common/udpsocket:folly_async_udp_socket",
],
)

15
quic/common/testutil/BUCK Normal file
View File

@ -0,0 +1,15 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mock_async_udp_socket",
headers = [
"MockAsyncUDPSocket.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/common/events:folly_eventbase",
"//quic/common/udpsocket:folly_async_udp_socket",
],
)

18
quic/common/third-party/BUCK vendored Normal file
View File

@ -0,0 +1,18 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "better_enums",
headers = [
"enum.h",
],
)
mvfst_cpp_library(
name = "tiny_optional",
headers = [
"optional.h",
"optional_flag_manipulator_fwd.h",
],
)

View File

@ -0,0 +1,74 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
load("@fbsource//tools/target_determinator/macros:ci.bzl", "ci")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "quic_async_udp_socket",
srcs = [
"QuicAsyncUDPSocket.cpp",
],
headers = [
"QuicAsyncUDPSocket.h",
],
exported_deps = [
"//folly:network_address",
"//folly:range",
"//folly/io:iobuf",
"//folly/io:socket_option_map",
"//folly/io/async:async_socket_exception",
"//folly/portability:sockets",
"//quic/common:network_data",
"//quic/common:optional",
"//quic/common/events:eventbase",
],
)
mvfst_cpp_library(
name = "quic_async_udp_socket_impl",
srcs = [
"QuicAsyncUDPSocketImpl.cpp",
],
headers = [
"QuicAsyncUDPSocketImpl.h",
],
exported_deps = [
":quic_async_udp_socket",
],
)
mvfst_cpp_library(
name = "folly_async_udp_socket",
srcs = [
"FollyQuicAsyncUDPSocket.cpp",
],
headers = [
"FollyQuicAsyncUDPSocket.h",
],
exported_deps = [
":quic_async_udp_socket_impl",
"//folly/io/async:async_udp_socket",
"//folly/net:network_socket",
"//quic/common:network_data",
"//quic/common/events:folly_eventbase",
],
)
mvfst_cpp_library(
name = "libev_async_udp_socket",
srcs = [
"LibevQuicAsyncUDPSocket.cpp",
],
headers = [
"LibevQuicAsyncUDPSocket.h",
],
labels = ci.labels(ci.remove(ci.windows())),
deps = [
"//quic/common:optional",
],
exported_deps = [
":quic_async_udp_socket_impl",
"//quic/common:network_data",
"//quic/common/events:libev_eventbase",
],
)

View File

@ -0,0 +1,56 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
load("@fbsource//tools/target_determinator/macros:ci.bzl", "ci")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "QuicAsyncUDPSocketMock",
headers = [
"QuicAsyncUDPSocketMock.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/common/udpsocket:quic_async_udp_socket",
],
)
mvfst_cpp_library(
name = "QuicAsyncUDPSocketTestBase",
headers = [
"QuicAsyncUDPSocketTestBase.h",
],
exported_deps = [
":QuicAsyncUDPSocketMock",
"//folly/portability:gtest",
],
)
mvfst_cpp_test(
name = "FollyQuicAsyncUDPSocketTest",
srcs = [
"FollyQuicAsyncUDPSocketTest.cpp",
],
supports_static_listing = False,
deps = [
":QuicAsyncUDPSocketTestBase",
"//folly/portability:gtest",
"//quic/common/udpsocket:folly_async_udp_socket",
],
)
mvfst_cpp_test(
name = "LibevQuicAsyncUDPSocketTest",
srcs = [
"LibevQuicAsyncUDPSocketTest.cpp",
],
labels = ci.labels(ci.remove(ci.windows())),
supports_static_listing = False,
deps = [
":QuicAsyncUDPSocketTestBase",
"//folly/portability:gtest",
"//quic/common/udpsocket:libev_async_udp_socket",
],
external_deps = [
"libev",
],
)

View File

@ -0,0 +1,367 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "bandwidth",
srcs = [
"Bandwidth.cpp",
],
headers = [
"Bandwidth.h",
],
deps = [
"//folly:conv",
],
)
mvfst_cpp_library(
name = "congestion_controller",
headers = [
"CongestionController.h",
],
exported_deps = [
":bandwidth",
"//quic:constants",
"//quic/state:cloned_packet_identifier",
"//quic/state:outstanding_packet",
],
)
mvfst_cpp_library(
name = "congestion_control_functions",
srcs = [
"CongestionControlFunctions.cpp",
],
headers = [
"CongestionControlFunctions.h",
],
deps = [
"//quic:constants",
"//quic/common:time_util",
],
exported_deps = [
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "congestion_controller_factory",
srcs = [
"CongestionControllerFactory.cpp",
],
headers = [
"CongestionControllerFactory.h",
],
deps = [
":bbr",
":bbr2",
":bbr_bandwidth_sampler",
":bbr_rtt_sampler",
":copa",
":copa2",
":cubic",
":newreno",
":static_cwnd_congestion_controller",
],
exported_deps = [
"//quic:constants",
],
)
mvfst_cpp_library(
name = "static_cwnd_congestion_controller",
srcs = [
"StaticCwndCongestionController.cpp",
],
headers = [
"StaticCwndCongestionController.h",
],
deps = [
":congestion_control_functions",
],
exported_deps = [
":congestion_controller",
"//quic/state:ack_event",
"//quic/state:quic_state_machine",
"//quic/state:transport_settings",
],
)
mvfst_cpp_library(
name = "server_congestion_controller_factory",
srcs = [
"ServerCongestionControllerFactory.cpp",
],
headers = [
"ServerCongestionControllerFactory.h",
],
deps = [
":bbr",
":bbr2",
":bbr_bandwidth_sampler",
":bbr_rtt_sampler",
":bbr_testing",
":copa",
":copa2",
":cubic",
":newreno",
":static_cwnd_congestion_controller",
],
exported_deps = [
":congestion_controller_factory",
],
)
mvfst_cpp_library(
name = "cubic",
srcs = [
"QuicCubic.cpp",
],
headers = [
"QuicCubic.h",
],
deps = [
":ecn_l4s_tracker",
"//folly:chrono",
"//quic/logging:qlogger_constants",
"//quic/state:state_functions",
],
exported_deps = [
":congestion_control_functions",
":congestion_controller",
"//quic:exception",
"//quic/state:ack_event",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "newreno",
srcs = [
"NewReno.cpp",
],
headers = [
"NewReno.h",
],
deps = [
":congestion_control_functions",
"//quic/logging:qlogger_constants",
],
exported_deps = [
":congestion_controller",
"//quic:exception",
"//quic/state:ack_event",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "copa",
srcs = [
"Copa.cpp",
],
headers = [
"Copa.h",
],
deps = [
":congestion_control_functions",
"//quic/common:time_util",
"//quic/logging:qlogger_constants",
],
exported_deps = [
":congestion_controller",
"//quic:exception",
"//quic/common:optional",
"//quic/congestion_control/third_party:chromium_windowed_filter",
"//quic/state:ack_event",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "copa2",
srcs = [
"Copa2.cpp",
],
headers = [
"Copa2.h",
],
deps = [
":congestion_control_functions",
"//quic/logging:qlogger_constants",
],
exported_deps = [
":congestion_controller",
"//quic/congestion_control/third_party:chromium_windowed_filter",
"//quic/state:ack_event",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "bbr",
srcs = [
"Bbr.cpp",
],
headers = [
"Bbr.h",
],
deps = [
":congestion_control_functions",
"//folly:random",
"//quic:constants",
"//quic/common:time_util",
"//quic/logging:qlogger_constants",
"//quic/state:ack_frequency_functions",
],
exported_deps = [
":bandwidth",
":congestion_controller",
"//quic/congestion_control/third_party:chromium_windowed_filter",
"//quic/state:quic_state_machine",
"//quic/state:transport_settings",
],
)
mvfst_cpp_library(
name = "bbr2",
srcs = [
"Bbr2.cpp",
],
headers = [
"Bbr2.h",
],
deps = [
":congestion_control_functions",
],
exported_deps = [
":bandwidth",
":congestion_controller",
"//quic/congestion_control/third_party:chromium_windowed_filter",
"//quic/state:quic_state_machine",
"//quic/state:transport_settings",
],
)
mvfst_cpp_library(
name = "bbr_rtt_sampler",
srcs = [
"BbrRttSampler.cpp",
],
headers = [
"BbrRttSampler.h",
],
exported_deps = [
":bbr",
"//quic:constants",
],
)
mvfst_cpp_library(
name = "bbr_bandwidth_sampler",
srcs = [
"BbrBandwidthSampler.cpp",
],
headers = [
"BbrBandwidthSampler.h",
],
deps = [
"//quic/logging:qlogger_constants",
],
exported_deps = [
":bbr",
"//quic/congestion_control/third_party:chromium_windowed_filter",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "bbr_testing",
srcs = [
"BbrTesting.cpp",
],
headers = [
"BbrTesting.h",
],
exported_deps = [
":bbr",
],
)
mvfst_cpp_library(
name = "pacer",
srcs = [
"TokenlessPacer.cpp",
],
headers = [
"Pacer.h",
"TokenlessPacer.h",
],
deps = [
":congestion_control_functions",
],
exported_deps = [
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "packet_processor",
headers = [
"PacketProcessor.h",
],
exported_deps = [
":congestion_controller",
"//folly/io:socket_option_map",
"//quic/state:cloned_packet_identifier",
"//quic/state:outstanding_packet",
],
)
mvfst_cpp_library(
name = "simulated_tbf",
srcs = [
"SimulatedTBF.cpp",
],
headers = [
"SimulatedTBF.h",
],
deps = [
"//quic:exception",
],
exported_deps = [
"//folly:token_bucket",
"//quic:constants",
],
exported_external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "throttling_signal_provider",
headers = [
"ThrottlingSignalProvider.h",
],
exported_deps = [
"//quic/common:optional",
],
)
mvfst_cpp_library(
name = "ecn_l4s_tracker",
srcs = [
"EcnL4sTracker.cpp",
],
headers = [
"EcnL4sTracker.h",
],
deps = [
"//quic:exception",
],
exported_deps = [
":packet_processor",
"//quic/state:quic_state_machine",
],
)

View File

@ -0,0 +1,228 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/congestion_control:bbr",
],
)
mvfst_cpp_library(
name = "TestingCubic",
headers = [
"TestingCubic.h",
],
exported_deps = [
"//quic/congestion_control:cubic",
],
)
mvfst_cpp_test(
name = "CongestionControlFunctionsTest",
srcs = [
"CongestionControlFunctionsTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic:constants",
"//quic/congestion_control:congestion_control_functions",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_test(
name = "CubicStateTest",
srcs = [
"CubicStateTest.cpp",
],
deps = [
":TestingCubic",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
],
)
mvfst_cpp_test(
name = "CubicTest",
srcs = [
"CubicHystartTest.cpp",
"CubicRecoveryTest.cpp",
"CubicSteadyTest.cpp",
"CubicTest.cpp",
],
deps = [
":TestingCubic",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/congestion_control:cubic",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "NewRenoTest",
srcs = [
"NewRenoTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/congestion_control:newreno",
"//quic/fizz/server/handshake:fizz_server_handshake",
],
)
mvfst_cpp_test(
name = "CopaTest",
srcs = [
"CopaTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/congestion_control:copa",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "BbrTest",
srcs = [
"BbrTest.cpp",
],
deps = [
":mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/congestion_control:bbr",
"//quic/congestion_control:bbr_bandwidth_sampler",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "BbrRttSamplerTest",
srcs = [
"BbrRttSamplerTest.cpp",
],
deps = [
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/congestion_control:bbr_rtt_sampler",
],
)
mvfst_cpp_test(
name = "BbrBandwidthSamplerTest",
srcs = [
"BbrBandwidthSamplerTest.cpp",
],
deps = [
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/congestion_control:bbr_bandwidth_sampler",
],
)
mvfst_cpp_test(
name = "BandwidthTest",
srcs = [
"BandwidthTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/congestion_control:bandwidth",
],
)
mvfst_cpp_test(
name = "PacerTest",
srcs = [
"PacerTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/congestion_control:pacer",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "StaticCwndCongestionControllerTest",
srcs = [
"StaticCwndCongestionControllerTest.cpp",
],
deps = [
":mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/congestion_control:bbr",
"//quic/congestion_control:static_cwnd_congestion_controller",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "SimulatedTBFTest",
srcs = [
"SimulatedTBFTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic:exception",
"//quic/congestion_control:simulated_tbf",
],
)
mvfst_cpp_test(
name = "ThrottlingSignalProviderTest",
srcs = [
"ThrottlingSignalProviderTest.cpp",
],
deps = [
"//quic/api:transport",
"//quic/common/test:test_utils",
"//quic/congestion_control:bbr",
"//quic/congestion_control:bbr_bandwidth_sampler",
"//quic/congestion_control:simulated_tbf",
"//quic/congestion_control:throttling_signal_provider",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "Bbr2Test",
srcs = [
"Bbr2Test.cpp",
],
deps = [
":mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/congestion_control:bbr2",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "EcnL4sTrackerTest",
srcs = [
"EcnL4sTrackerTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/api/test:mocks",
"//quic/congestion_control:ecn_l4s_tracker",
],
)

View File

@ -0,0 +1,10 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "chromium_windowed_filter",
headers = [
"windowed_filter.h",
],
)

25
quic/dsr/BUCK Normal file
View File

@ -0,0 +1,25 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "types",
srcs = [
"Types.cpp",
],
headers = [
"Types.h",
],
exported_deps = [
"//folly:network_address",
"//quic/codec:types",
"//quic/common:optional",
"//quic/server/state:server",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "dsr_packetization_request_sender",
headers = ["DSRPacketizationRequestSender.h"],
)

30
quic/dsr/backend/BUCK Normal file
View File

@ -0,0 +1,30 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "dsr_packetizer",
srcs = ["DSRPacketizer.cpp"],
headers = ["DSRPacketizer.h"],
deps = [
"//quic/api:quic_batch_writer",
],
exported_deps = [
"//fizz/crypto/aead:aead",
"//fizz/protocol:default_factory",
"//fizz/protocol:protocol",
"//fizz/record:record",
"//folly:hash",
"//folly:network_address",
"//folly/container:evicting_cache_map",
"//folly/io/async:async_udp_socket",
"//quic/api:transport_helpers",
"//quic/codec:packet_number_cipher",
"//quic/codec:pktbuilder",
"//quic/codec:types",
"//quic/dsr:types",
"//quic/fizz/handshake:fizz_handshake",
"//quic/handshake:aead",
"//quic/xsk:xsk_sender",
],
)

View File

@ -0,0 +1,32 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "test_utils",
headers = [
"TestUtils.h",
],
exported_deps = [
"//quic/dsr:types",
"//quic/dsr/backend:dsr_packetizer",
],
)
mvfst_cpp_test(
name = "dsr_packetizer_test",
srcs = [
"DSRPacketizerTest.cpp",
],
deps = [
":test_utils",
"//folly/portability:gtest",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_utils",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/common/udpsocket:quic_async_udp_socket",
"//quic/dsr/backend:dsr_packetizer",
"//quic/dsr/frontend:write_functions",
"//quic/dsr/test:test_common",
],
)

74
quic/dsr/frontend/BUCK Normal file
View File

@ -0,0 +1,74 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "write_codec",
srcs = [
"WriteCodec.cpp",
],
headers = [
"WriteCodec.h",
],
deps = [
"//quic/common:optional",
],
exported_deps = [
":packet_builder",
"//quic/dsr:types",
],
)
mvfst_cpp_library(
name = "packet_builder",
headers = [
"PacketBuilder.h",
],
exported_deps = [
"//quic/codec:packet_number",
"//quic/codec:types",
"//quic/dsr:types",
],
)
mvfst_cpp_library(
name = "scheduler",
srcs = [
"Scheduler.cpp",
],
headers = [
"Scheduler.h",
],
deps = [
":write_codec",
"//quic/flowcontrol:flow_control",
"//quic/state:state_functions",
"//quic/state:stream_functions",
],
exported_deps = [
":packet_builder",
"//quic/server/state:server",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "write_functions",
srcs = [
"WriteFunctions.cpp",
],
headers = [
"WriteFunctions.h",
],
deps = [
"//folly:scope_guard",
],
exported_deps = [
":scheduler",
"//quic/api:transport_helpers",
"//quic/codec:types",
"//quic/dsr:dsr_packetization_request_sender",
"//quic/handshake:aead",
"//quic/server/state:server",
],
)

View File

@ -0,0 +1,78 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/dsr/frontend:packet_builder",
],
)
mvfst_cpp_test(
name = "write_codec_test",
srcs = [
"WriteCodecTest.cpp",
],
deps = [
":mocks",
"//folly/portability:gtest",
"//quic:constants",
"//quic/common/test:test_utils",
"//quic/dsr/frontend:write_codec",
"//quic/dsr/test:test_common",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/handshake/test:mocks",
"//quic/server/state:server",
],
)
mvfst_cpp_test(
name = "packet_builder_test",
srcs = [
"PacketBuilderTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/dsr:types",
"//quic/dsr/frontend:packet_builder",
"//quic/dsr/test:test_common",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/handshake/test:mocks",
"//quic/server/state:server",
],
)
mvfst_cpp_test(
name = "scheduler_test",
srcs = [
"SchedulerTest.cpp",
],
deps = [
":mocks",
"//folly/portability:gtest",
"//quic/dsr/frontend:scheduler",
"//quic/dsr/test:mocks",
"//quic/dsr/test:test_common",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
],
)
mvfst_cpp_test(
name = "write_functions_test",
srcs = [
"WriteFunctionsTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/dsr/frontend:write_functions",
"//quic/dsr/test:test_common",
"//quic/state/test:mocks",
],
)

27
quic/dsr/test/BUCK Normal file
View File

@ -0,0 +1,27 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/dsr:dsr_packetization_request_sender",
],
)
mvfst_cpp_library(
name = "test_common",
headers = ["TestCommon.h"],
exported_deps = [
":mocks",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/dsr/frontend:scheduler",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
],
)

View File

@ -0,0 +1,59 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "fizz_client_handshake",
srcs = [
"FizzClientHandshake.cpp",
"FizzClientQuicHandshakeContext.cpp",
],
headers = [
"FizzClientExtensions.h",
"FizzClientHandshake.h",
"FizzClientQuicHandshakeContext.h",
],
deps = [
"//fizz/client:early_data_rejection",
"//fizz/protocol:exporter",
"//fizz/protocol:protocol",
"//quic/codec:pktbuilder",
],
exported_deps = [
":psk_cache",
"//fizz/client:actions",
"//fizz/client:async_fizz_client",
"//fizz/client:client_extensions",
"//fizz/client:ech_policy",
"//fizz/client:fizz_client_context",
"//fizz/client:protocol",
"//fizz/extensions/clientpadding:types",
"//fizz/protocol:default_certificate_verifier",
"//quic/client:client_extension",
"//quic/client:state_and_handshake",
"//quic/fizz/handshake:fizz_handshake",
],
)
mvfst_cpp_library(
name = "psk_cache",
headers = [
"QuicPskCache.h",
],
exported_deps = [
"//fizz/client:psk_cache",
"//quic/client:cached_server_tp",
"//quic/common:optional",
],
)
mvfst_cpp_library(
name = "token_cache",
headers = [
"QuicTokenCache.h",
],
exported_deps = [
"//folly:string",
"//quic/common:optional",
],
)

View File

@ -0,0 +1,57 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_test(
name = "fizz_client_handshake_test",
srcs = [
"FizzClientHandshakeTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
":mock_psk_cache",
"//fizz/backend:openssl",
"//fizz/client/test:mocks",
"//fizz/crypto/test:TestUtil",
"//fizz/protocol/clock/test:mock_clock",
"//fizz/protocol/ech:decrypter",
"//fizz/protocol/test:mocks",
"//fizz/server:protocol",
"//fizz/server/test:mocks",
"//folly:fbstring",
"//folly/io/async:scoped_event_base_thread",
"//folly/io/async:ssl_context",
"//folly/io/async/test:mocks",
"//quic/client:client_extension",
"//quic/client:state_and_handshake",
"//quic/common/test:test_utils",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/fizz/handshake:fizz_handshake",
"//quic/state:quic_state_machine",
"//quic/state:stream_functions",
],
)
mvfst_cpp_test(
name = "FizzClientExtensionsTest",
srcs = [
"FizzClientExtensionsTest.cpp",
],
deps = [
"//fizz/protocol/test:test_util",
"//quic/common/test:test_utils",
"//quic/fizz/client/handshake:fizz_client_handshake",
],
)
mvfst_cpp_library(
name = "mock_psk_cache",
headers = [
"MockQuicPskCache.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/common:optional",
"//quic/fizz/client/handshake:psk_cache",
],
)

View File

@ -0,0 +1,57 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "quic_client_transport_test_util",
headers = [
"QuicClientTransportTestUtil.h",
],
exported_deps = [
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/api:transport",
"//quic/api/test:mocks",
"//quic/client:client",
"//quic/codec:types",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_client_utils",
"//quic/common/test:test_utils",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/state/test:mocks",
],
)
mvfst_cpp_test(
name = "QuicClientTransportTest",
srcs = [
"QuicClientTransportTest.cpp",
],
supports_static_listing = False,
deps = [
":quic_client_transport_test_util",
"//fizz/crypto/aead/test:mocks",
"//fizz/protocol/clock/test:mock_clock",
"//folly/futures:core",
"//folly/io:iobuf",
"//folly/io:socket_option_map",
"//folly/io/async:scoped_event_base_thread",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic:constants",
"//quic/common/events:folly_eventbase",
"//quic/common/events:highres_quic_timer",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/congestion_control:congestion_controller_factory",
"//quic/fizz/client/handshake/test:mock_psk_cache",
"//quic/fizz/handshake:fizz_handshake",
"//quic/handshake:transport_parameters",
"//quic/handshake/test:mocks",
"//quic/happyeyeballs:happyeyeballs",
"//quic/logging:file_qlogger",
"//quic/logging/test:mocks",
"//quic/samples/echo:echo_handler",
"//quic/server:server",
],
)

43
quic/fizz/handshake/BUCK Normal file
View File

@ -0,0 +1,43 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "fizz_handshake",
srcs = [
"FizzBridge.cpp",
"FizzCryptoFactory.cpp",
"FizzPacketNumberCipher.cpp",
"FizzRetryIntegrityTagGenerator.cpp",
"QuicFizzFactory.cpp",
],
headers = [
"FizzBridge.h",
"FizzCryptoFactory.h",
"FizzPacketNumberCipher.h",
"FizzRetryIntegrityTagGenerator.h",
"FizzTransportParameters.h",
"QuicFizzFactory.h",
],
deps = [
"//fizz/backend:openssl",
"//fizz/crypto:crypto",
"//fizz/crypto:utils",
"//quic/common:optional",
],
exported_deps = [
"//fizz/crypto/aead:aead",
"//fizz/protocol:default_factory",
"//fizz/protocol:types",
"//fizz/record:record",
"//folly/ssl:openssl_ptr_types",
"//quic:constants",
"//quic/codec:packet_number_cipher",
"//quic/codec:types",
"//quic/common:buf_util",
"//quic/handshake:aead",
"//quic/handshake:handshake",
"//quic/handshake:retry_integrity_tag_generator",
"//quic/handshake:transport_parameters",
],
)

View File

@ -0,0 +1,46 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_test(
name = "FizzTransportParametersTest",
srcs = [
"FizzTransportParametersTest.cpp",
],
deps = [
"//fizz/record/test:extension_tests_base",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/fizz/handshake:fizz_handshake",
],
)
mvfst_cpp_test(
name = "FizzCryptoFactoryTest",
srcs = [
"FizzCryptoFactoryTest.cpp",
],
deps = [
"//fizz/crypto/aead/test:mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/common/test:test_utils",
"//quic/fizz/handshake:fizz_handshake",
"//quic/handshake/test:mocks",
],
)
mvfst_cpp_test(
name = "FizzPacketNumberCipherTest",
srcs = [
"FizzPacketNumberCipherTest.cpp",
],
supports_static_listing = False,
deps = [
"//fizz/record:record",
"//folly:string",
"//folly/portability:gtest",
"//quic/fizz/handshake:fizz_handshake",
],
)

View File

@ -0,0 +1,46 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "fizz_server_handshake",
srcs = [
"FizzServerHandshake.cpp",
"FizzServerQuicHandshakeContext.cpp",
],
headers = [
"FizzServerHandshake.h",
"FizzServerQuicHandshakeContext.h",
],
deps = [
":handshake_app_token",
"//fizz/protocol:protocol",
"//quic/server/state:server",
],
exported_deps = [
"//fizz/server:fizz_server_context",
"//fizz/server:protocol",
"//quic/common:circular_deque",
"//quic/fizz/handshake:fizz_handshake",
"//quic/server/handshake:server_handshake",
],
)
mvfst_cpp_library(
name = "handshake_app_token",
srcs = [
"AppToken.cpp",
],
headers = [
"AppToken.h",
],
deps = [
"//fizz/server:protocol",
"//quic/fizz/handshake:fizz_handshake",
],
exported_deps = [
"//fizz/record:record",
"//quic/common:optional",
"//quic/server/handshake:app_token",
],
)

20
quic/flowcontrol/BUCK Normal file
View File

@ -0,0 +1,20 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "flow_control",
srcs = [
"QuicFlowController.cpp",
],
headers = ["QuicFlowController.h"],
deps = [
"//quic:constants",
"//quic:exception",
"//quic/logging:qlogger",
],
exported_deps = [
"//quic/codec:types",
"//quic/state:quic_state_machine",
],
)

View File

@ -0,0 +1,17 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_test(
name = "QuicFlowControlTest",
srcs = [
"QuicFlowControlTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
"//quic/client:state_and_handshake",
"//quic/common/test:test_utils",
"//quic/flowcontrol:flow_control",
"//quic/state/test:mocks",
],
)

62
quic/handshake/BUCK Normal file
View File

@ -0,0 +1,62 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "aead",
headers = [
"Aead.h",
],
exported_deps = [
"//folly/io:iobuf",
"//quic/common:optional",
],
)
mvfst_cpp_library(
name = "handshake",
srcs = [
"CryptoFactory.cpp",
"HandshakeLayer.cpp",
],
headers = [
"CryptoFactory.h",
"HandshakeLayer.h",
],
exported_deps = [
":aead",
"//quic:constants",
"//quic/codec:packet_number_cipher",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "transport_parameters",
srcs = [
"TransportParameters.cpp",
],
headers = [
"TransportParameters.h",
],
deps = [
"//quic/common:buf_util",
"//quic/state:quic_state_machine",
],
exported_deps = [
"//quic:constants",
"//quic:exception",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "retry_integrity_tag_generator",
headers = [
"RetryIntegrityTagGenerator.h",
],
exported_deps = [
"//folly/io:iobuf",
"//quic:constants",
],
)

17
quic/handshake/test/BUCK Normal file
View File

@ -0,0 +1,17 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/codec:packet_number_cipher",
"//quic/fizz/handshake:fizz_handshake",
"//quic/handshake:aead",
"//quic/handshake:handshake",
],
)

27
quic/happyeyeballs/BUCK Normal file
View File

@ -0,0 +1,27 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "happyeyeballs",
srcs = [
"QuicHappyEyeballsFunctions.cpp",
],
headers = [
"QuicHappyEyeballsFunctions.h",
],
deps = [
"//common/network:mvfst_hooks", # @manual
"//folly:network_address",
"//folly/portability:sockets",
"//quic/common:socket_util",
"//quic/state:quic_state_machine",
],
exported_deps = [
"//folly/io:socket_option_map",
"//folly/net:net_ops",
"//quic/client:state_and_handshake",
"//quic/common/events:eventbase",
"//quic/common/udpsocket:quic_async_udp_socket",
],
)

71
quic/logging/BUCK Normal file
View File

@ -0,0 +1,71 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "qlogger_constants",
srcs = [
"QLoggerConstants.cpp",
],
headers = [
"QLoggerConstants.h",
],
exported_deps = [
"//folly:string",
"//quic:constants",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "qlogger",
srcs = [
"QLogger.cpp",
],
headers = [
"QLogger.h",
],
exported_deps = [
":qlogger_constants",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "base_qlogger",
srcs = [
"BaseQLogger.cpp",
"QLoggerTypes.cpp",
],
headers = [
"BaseQLogger.h",
"QLoggerTypes.h",
],
deps = [
"//quic:exception",
],
exported_deps = [
":qlogger",
":qlogger_constants",
"//folly:dynamic",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "file_qlogger",
srcs = [
"FileQLogger.cpp",
],
headers = [
"FileQLogger.h",
],
exported_deps = [
":base_qlogger",
":qlogger_constants",
"//folly:dynamic",
"//folly/compression:compression",
"//folly/logging:logging",
"//quic/codec:types",
],
)

31
quic/logging/test/BUCK Normal file
View File

@ -0,0 +1,31 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/logging:qlogger",
],
)
mvfst_cpp_test(
name = "QLoggerTest",
srcs = [
"QLoggerTest.cpp",
],
deps = [
"//folly:dynamic",
"//folly:file_util",
"//folly:random",
"//folly/portability:filesystem",
"//quic/common/test:test_utils",
"//quic/congestion_control:bbr",
"//quic/logging:file_qlogger",
"//quic/logging:qlogger",
],
)

31
quic/loss/BUCK Normal file
View File

@ -0,0 +1,31 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "loss",
srcs = [
"QuicLossFunctions.cpp",
],
headers = [
"QuicLossFunctions.h",
],
deps = [
"//folly:small_vector",
"//quic/state:stream_functions",
],
exported_deps = [
"//folly:chrono",
"//quic:constants",
"//quic/codec:types",
"//quic/common:optional",
"//quic/common:time_util",
"//quic/congestion_control:congestion_controller",
"//quic/flowcontrol:flow_control",
"//quic/logging:qlogger_constants",
"//quic/observer:socket_observer_types",
"//quic/state:quic_state_machine",
"//quic/state:simple_frame_functions",
"//quic/state:state_functions",
],
)

33
quic/loss/test/BUCK Normal file
View File

@ -0,0 +1,33 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_test(
name = "QuicLossFunctionsTest",
srcs = [
"QuicLossFunctionsTest.cpp",
],
supports_static_listing = False,
deps = [
"//folly/io/async/test:mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/api:transport",
"//quic/api/test:mocks",
"//quic/client:state_and_handshake",
"//quic/codec:types",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_utils",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/dsr:types",
"//quic/dsr/test:mocks",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/logging/test:mocks",
"//quic/loss:loss",
"//quic/server/state:server",
"//quic/state:ack_event",
"//quic/state/stream:stream",
"//quic/state/test:mocks",
],
)

35
quic/observer/BUCK Normal file
View File

@ -0,0 +1,35 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "socket_observer_container",
headers = ["SocketObserverContainer.h"],
exported_deps = [
":socket_observer_interface",
"//folly:observer_container",
],
)
mvfst_cpp_library(
name = "socket_observer_interface",
srcs = [
"SocketObserverInterface.cpp",
],
headers = ["SocketObserverInterface.h"],
exported_deps = [
"//quic:exception",
"//quic/common:small_collections",
"//quic/state:ack_event",
"//quic/state:outstanding_packet",
"//quic/state:quic_stream_utilities",
],
)
mvfst_cpp_library(
name = "socket_observer_types",
headers = ["SocketObserverTypes.h"],
exported_deps = [
":socket_observer_container",
],
)

16
quic/observer/test/BUCK Normal file
View File

@ -0,0 +1,16 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_test(
name = "SocketObserverInterfaceTest",
srcs = [
"SocketObserverInterfaceTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
"//quic/common/test:test_packet_builders",
"//quic/common/test:test_utils",
"//quic/observer:socket_observer_interface",
],
)

33
quic/priority/BUCK Normal file
View File

@ -0,0 +1,33 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
# Common library
oncall("traffic_protocols")
mvfst_cpp_library(
name = "priority_queue",
headers = [
"PriorityQueue.h",
],
exported_deps = [
"//quic/common:optional",
],
exported_external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "round_robin",
srcs = [
"RoundRobin.cpp",
],
headers = [
"RoundRobin.h",
],
exported_deps = [
":priority_queue",
"//folly/container:f14_hash",
"//quic/common:optional",
],
)

27
quic/priority/test/BUCK Normal file
View File

@ -0,0 +1,27 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_test")
# Common library
oncall("traffic_protocols")
mvfst_cpp_test(
name = "priority_queue_test",
srcs = ["PriorityQueueTest.cpp"],
headers = [],
deps = [
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/priority:priority_queue",
],
)
mvfst_cpp_test(
name = "round_robin_test",
srcs = ["RoundRobinTests.cpp"],
headers = [],
deps = [
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/priority:round_robin",
],
)

55
quic/samples/echo/BUCK Normal file
View File

@ -0,0 +1,55 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_binary", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "echo_handler",
headers = [
"EchoClient.h",
"EchoHandler.h",
"EchoServer.h",
"EchoTransportServer.h",
"LogQuicStats.h",
],
exported_deps = [
"fbcode//fizz/backend:openssl",
"fbcode//fizz/compression:zlib_certificate_decompressor",
"fbcode//fizz/compression:zstd_certificate_decompressor",
"fbcode//folly:file_util",
"fbcode//folly:synchronized",
"fbcode//folly/fibers:core",
"fbcode//folly/io/async:scoped_event_base_thread",
"fbcode//quic:constants",
"fbcode//quic:exception",
"fbcode//quic/api:transport",
"fbcode//quic/client:client",
"fbcode//quic/codec:types",
"fbcode//quic/common:buf_util",
"fbcode//quic/common/events:folly_eventbase",
"fbcode//quic/common/test:test_client_utils",
"fbcode//quic/common/test:test_utils",
"fbcode//quic/common/udpsocket:folly_async_udp_socket",
"fbcode//quic/fizz/client/handshake:fizz_client_handshake",
"fbcode//quic/server:server",
"fbcode//quic/state:stats_callback",
],
exported_external_deps = [
"glog",
],
)
mvfst_cpp_binary(
name = "echo",
srcs = [
"main.cpp",
],
deps = [
":echo_handler",
"//fizz/crypto:utils",
"//folly/init:init",
"//folly/portability:gflags",
],
external_deps = [
"glog",
],
)

120
quic/server/BUCK Normal file
View File

@ -0,0 +1,120 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "accept_observer",
headers = [
"AcceptObserver.h",
],
)
mvfst_cpp_library(
name = "quic_handshake_socket_holder",
srcs = [],
headers = [
"QuicHandshakeSocketHolder.h",
],
exported_deps = [
":server",
"//quic/api:transport",
],
)
mvfst_cpp_library(
name = "rate_limiter",
srcs = ["SlidingWindowRateLimiter.cpp"],
headers = [
"RateLimiter.h",
"SlidingWindowRateLimiter.h",
],
exported_deps = [
"//quic:constants",
"//quic/common:optional",
],
)
mvfst_cpp_library(
name = "server",
srcs = [
"QuicServer.cpp",
"QuicServerPacketRouter.cpp",
"QuicServerTransport.cpp",
"QuicServerWorker.cpp",
] + select({
"DEFAULT": ["QuicServerBackendIoUring.cpp"],
"ovr_config//os:windows": ["QuicServerBackend.cpp"],
}),
headers = [
"QuicReusePortUDPSocketFactory.h",
"QuicServer.h",
"QuicServerPacketRouter.h",
"QuicServerTransport.h",
"QuicServerTransportFactory.h",
"QuicServerWorker.h",
"QuicSharedUDPSocketFactory.h",
"QuicUDPSocketFactory.h",
],
public_include_directories = ["../.."],
use_raw_headers = True,
deps = [
"fbsource//third-party/fmt:fmt",
":accept_observer",
"//common/network:mvfst_hooks", # @manual
"//folly:conv",
"//folly/chrono:conv",
"//folly/io:iobuf",
"//folly/io/async:event_base_manager",
"//folly/portability:gflags",
"//folly/system:thread_id",
"//quic/codec:header_codec",
"//quic/common:optional",
"//quic/common:socket_util",
"//quic/congestion_control:bbr",
"//quic/congestion_control:copa",
"//quic/dsr/frontend:write_functions",
"//quic/fizz/handshake:fizz_handshake",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/handshake:app_token",
"//quic/server/handshake:default_app_token_validator",
"//quic/server/handshake:stateless_reset_generator",
"//quic/server/handshake:token_generator",
"//quic/server/third-party:siphash",
"//quic/state:quic_stream_utilities",
"//quic/state:transport_settings_functions",
] + select({
"DEFAULT": ["//folly/io/async:io_uring_backend"],
"ovr_config//os:windows": [],
}),
exported_deps = [
":rate_limiter",
"//fizz/record:record",
"//fizz/server:fizz_server_context",
"//folly:random",
"//folly:small_vector",
"//folly:thread_local",
"//folly/container:evicting_cache_map",
"//folly/container:f14_hash",
"//folly/io:socket_option_map",
"//folly/io/async:async_base",
"//folly/io/async:async_transport_certificate",
"//folly/io/async:async_udp_socket",
"//folly/io/async:scoped_event_base_thread",
"//quic:constants",
"//quic/api:transport",
"//quic/api:transport_helpers",
"//quic/codec:types",
"//quic/common:buf_accessor",
"//quic/common:transport_knobs",
"//quic/common/events:folly_eventbase",
"//quic/common/events:highres_quic_timer",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/congestion_control:congestion_controller_factory",
"//quic/congestion_control:server_congestion_controller_factory",
"//quic/server/handshake:server_extension",
"//quic/server/state:server",
"//quic/server/state:server_connection_id_rejector",
"//quic/state:quic_connection_stats",
"//quic/state:stats_callback",
],
)

View File

@ -0,0 +1,26 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "server_async_transport",
srcs = [
"QuicAsyncTransportAcceptor.cpp",
"QuicAsyncTransportServer.cpp",
"QuicServerAsyncTransport.cpp",
],
headers = [
"QuicAsyncTransportAcceptor.h",
"QuicAsyncTransportServer.h",
"QuicServerAsyncTransport.h",
],
deps = [
"//folly:conv",
],
exported_deps = [
"//folly/io/async:async_transport",
"//folly/io/async:scoped_event_base_thread",
"//quic/api:stream_async_transport",
"//quic/server:server",
],
)

View File

@ -0,0 +1,26 @@
load("@fbsource//tools/build_defs/dirsync:fb_dirsync_cpp_unittest.bzl", "fb_dirsync_cpp_unittest")
oncall("traffic_protocols")
fb_dirsync_cpp_unittest(
name = "QuicAsyncTransportServerTest",
srcs = [
"QuicAsyncTransportServerTest.cpp",
],
deps = [
"//folly/futures:core",
"//folly/io/async:async_transport",
"//folly/io/async/test:mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/api/test:mocks",
"//quic/client:client",
"//quic/client:client_async_transport",
"//quic/common/test:test_client_utils",
"//quic/common/test:test_utils",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/server:server",
"//quic/server/async_tran:server_async_transport",
"//quic/server/test:mocks",
],
)

124
quic/server/handshake/BUCK Normal file
View File

@ -0,0 +1,124 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "server_handshake",
srcs = [
"ServerHandshake.cpp",
],
headers = [
"ServerHandshake.h",
"ServerHandshakeFactory.h",
],
deps = [
"//quic/fizz/handshake:fizz_handshake",
"//quic/state:stream_functions",
],
exported_deps = [
":app_token",
":server_extension",
"//fizz/protocol:default_certificate_verifier",
"//fizz/server:fizz_server",
"//fizz/server:fizz_server_context",
"//folly/io:iobuf",
"//folly/io/async:delayed_destruction",
"//quic:constants",
"//quic:exception",
"//quic/handshake:handshake",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "server_extension",
headers = [
"ServerTransportParametersExtension.h",
],
exported_deps = [
":stateless_reset_generator",
"//fizz/server:server_extensions",
"//quic/fizz/handshake:fizz_handshake",
],
)
mvfst_cpp_library(
name = "app_token",
srcs = [
"AppToken.cpp",
],
headers = [
"AppToken.h",
],
exported_deps = [
"//quic:constants",
"//quic/handshake:transport_parameters",
],
)
mvfst_cpp_library(
name = "default_app_token_validator",
srcs = [
"DefaultAppTokenValidator.cpp",
],
headers = [
"DefaultAppTokenValidator.h",
],
deps = [
"//fizz/server:resumption_state",
"//folly:network_address",
"//quic:constants",
"//quic/api:transport",
"//quic/api:transport_helpers",
"//quic/fizz/server/handshake:handshake_app_token",
"//quic/handshake:transport_parameters",
"//quic/server/state:server",
],
exported_deps = [
"//fizz/server:protocol",
"//folly:function",
"//folly/io:iobuf",
"//quic/common:optional",
],
external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "stateless_reset_generator",
srcs = [
"StatelessResetGenerator.cpp",
],
headers = [
"StatelessResetGenerator.h",
],
deps = [
"//fizz/backend:openssl",
"//folly:range",
],
exported_deps = [
"//fizz/crypto:crypto",
"//fizz/crypto:hkdf",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "token_generator",
srcs = [
"TokenGenerator.cpp",
],
headers = [
"TokenGenerator.h",
],
deps = [
"//folly:range",
"//quic/codec:decode",
],
exported_deps = [
"//fizz/server:aead_token_cipher",
"//folly/io:iobuf",
"//quic/codec:types",
],
)

View File

@ -0,0 +1,103 @@
load("@fbsource//tools/build_defs/dirsync:fb_dirsync_cpp_unittest.bzl", "fb_dirsync_cpp_unittest")
oncall("traffic_protocols")
fb_dirsync_cpp_unittest(
name = "ServerHandshakeTest",
srcs = [
"ServerHandshakeTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
"//fizz/client/test:mocks",
"//fizz/crypto/test:TestUtil",
"//fizz/protocol/clock/test:mock_clock",
"//fizz/protocol/test:mocks",
"//fizz/server/test:mocks",
"//folly/io/async:scoped_event_base_thread",
"//folly/io/async:ssl_context",
"//folly/io/async/test:mocks",
"//quic:constants",
"//quic/common/test:test_utils",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/fizz/handshake:fizz_handshake",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/fizz/server/handshake:handshake_app_token",
"//quic/handshake:handshake",
"//quic/server/handshake:app_token",
"//quic/server/handshake:server_handshake",
"//quic/state:quic_state_machine",
],
)
fb_dirsync_cpp_unittest(
name = "ServerTransportParametersTest",
srcs = [
"ServerTransportParametersTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
"//fizz/protocol/test:test_util",
"//quic:constants",
"//quic/common/test:test_utils",
"//quic/server/handshake:server_extension",
],
)
fb_dirsync_cpp_unittest(
name = "AppTokenTest",
srcs = [
"AppTokenTest.cpp",
],
deps = [
"//fizz/server:resumption_state",
"//quic:constants",
"//quic/common:optional",
"//quic/fizz/server/handshake:handshake_app_token",
"//quic/server/state:server",
],
)
fb_dirsync_cpp_unittest(
name = "DefaultAppTokenValidatorTest",
srcs = [
"DefaultAppTokenValidatorTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
"//fizz/server:resumption_state",
"//quic:constants",
"//quic/api/test:mocks",
"//quic/common:optional",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/fizz/server/handshake:handshake_app_token",
"//quic/server/handshake:default_app_token_validator",
"//quic/server/state:server",
"//quic/state/test:mocks",
],
)
fb_dirsync_cpp_unittest(
name = "StatelessResetGeneratorTest",
srcs = [
"StatelessResetGeneratorTest.cpp",
],
deps = [
"//folly:network_address",
"//folly:random",
"//folly/portability:gtest",
"//quic/server/handshake:stateless_reset_generator",
],
)
fb_dirsync_cpp_unittest(
name = "RetryTokenGeneratorTest",
srcs = [
"RetryTokenGeneratorTest.cpp",
],
deps = [
"//folly:random",
"//folly/portability:gtest",
"//quic/server/handshake:token_generator",
],
)

61
quic/server/state/BUCK Normal file
View File

@ -0,0 +1,61 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "server_connection_id_rejector",
headers = [
"ServerConnectionIdRejector.h",
],
exported_deps = [
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "server",
srcs = [
"ServerStateMachine.cpp",
],
headers = [
"ServerStateMachine.h",
],
deps = [
"//quic/api:transport_helpers",
"//quic/common:buf_util",
"//quic/congestion_control:pacer",
"//quic/fizz/handshake:fizz_handshake",
"//quic/fizz/server/handshake:handshake_app_token",
"//quic/handshake:transport_parameters",
"//quic/logging:qlogger_constants",
"//quic/server/handshake:token_generator",
"//quic/state:datagram_handler",
"//quic/state:pacing_functions",
"//quic/state:stats_callback",
"//quic/state/stream:stream",
],
exported_deps = [
":server_connection_id_rejector",
"//folly:exception_wrapper",
"//folly:network_address",
"//folly:overload",
"//folly:random",
"//folly/io/async:async_socket_exception",
"//quic:exception",
"//quic/codec:types",
"//quic/common:network_data",
"//quic/congestion_control:congestion_controller_factory",
"//quic/congestion_control:cubic",
"//quic/flowcontrol:flow_control",
"//quic/loss:loss",
"//quic/server/handshake:server_handshake",
"//quic/state:ack_handler",
"//quic/state:quic_state_machine",
"//quic/state:simple_frame_functions",
"//quic/state:state_functions",
"//quic/state:stream_functions",
],
exported_external_deps = [
"glog",
],
)

146
quic/server/test/BUCK Normal file
View File

@ -0,0 +1,146 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
load("@fbsource//tools/build_defs/dirsync:fb_dirsync_cpp_unittest.bzl", "fb_dirsync_cpp_unittest")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/server:server",
"//quic/server/state:server_connection_id_rejector",
],
)
fb_dirsync_cpp_unittest(
name = "QuicServerTest",
srcs = [
"QuicServerTest.cpp",
"QuicSocketTest.cpp",
],
deps = [
":mocks",
"//folly/futures:core",
"//folly/io:iobuf",
"//folly/io/async:async_base",
"//folly/io/async/test:mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/api:transport",
"//quic/api/test:mocks",
"//quic/client:client",
"//quic/codec:header_codec",
"//quic/codec:types",
"//quic/codec/test:mocks",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_client_utils",
"//quic/common/test:test_utils",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/congestion_control:server_congestion_controller_factory",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/fizz/handshake:fizz_handshake",
"//quic/samples/echo:echo_handler",
"//quic/server:accept_observer",
"//quic/server:rate_limiter",
"//quic/server:server",
"//quic/server/handshake:stateless_reset_generator",
"//quic/server/handshake:token_generator",
"//quic/state/test:mocks",
],
)
mvfst_cpp_library(
name = "quic_server_transport_test_util",
headers = [
"QuicServerTransportTestUtil.h",
],
exported_deps = [
"fbsource//third-party/googletest:gmock",
"fbsource//third-party/googletest:gtest",
":mocks",
"//quic/api:transport_helpers",
"//quic/api/test:mocks",
"//quic/codec:types",
"//quic/common:transport_knobs",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_utils",
"//quic/common/testutil:mock_async_udp_socket",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/congestion_control:server_congestion_controller_factory",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server:server",
"//quic/state/test:mocks",
],
)
fb_dirsync_cpp_unittest(
name = "QuicServerTransportTest",
srcs = [
"QuicServerTransportTest.cpp",
],
supports_static_listing = False,
deps = [
":quic_server_transport_test_util",
"//quic/codec:pktbuilder",
"//quic/common:transport_knobs",
"//quic/dsr:types",
"//quic/dsr/test:mocks",
"//quic/fizz/handshake:fizz_handshake",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/logging:file_qlogger",
"//quic/server/handshake:server_handshake",
"//quic/state:stream_functions",
"//quic/state/test:mocks",
],
)
fb_dirsync_cpp_unittest(
name = "ServerStateMachineTest",
srcs = [
"ServerStateMachineTest.cpp",
],
supports_static_listing = False,
deps = [
":mocks",
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/codec:types",
"//quic/codec/test:mocks",
"//quic/common/test:test_utils",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
"//quic/state/test:mocks",
],
)
fb_dirsync_cpp_unittest(
name = "SlidingWindowRateLimiterTest",
srcs = [
"SlidingWindowRateLimiterTest.cpp",
],
deps = [
"//quic/server:rate_limiter",
],
)
fb_dirsync_cpp_unittest(
name = "QuicClientServerIntegrationTest",
srcs = [
"QuicClientServerIntegrationTest.cpp",
],
deps = [
"//folly/portability:gmock",
"//folly/portability:gtest",
"//quic/api/test:mocks",
"//quic/client:client",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_client_utils",
"//quic/common/test:test_utils",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/server:server",
],
)

8
quic/server/third-party/BUCK vendored Normal file
View File

@ -0,0 +1,8 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "siphash",
headers = ["siphash.h"],
)

345
quic/state/BUCK Normal file
View File

@ -0,0 +1,345 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "outstanding_packet",
headers = [
"OutstandingPacket.h",
],
exported_deps = [
":cloned_packet_identifier",
":loss_state",
"//folly/io:socket_option_map",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "loss_state",
headers = [
"LossState.h",
],
exported_deps = [
"//quic/codec:types",
"//quic/common:enum_array",
],
)
mvfst_cpp_library(
name = "transport_settings",
headers = [
"TransportSettings.h",
],
exported_deps = [
":quic_priority_queue",
"//quic:constants",
"//quic/common:optional",
],
)
mvfst_cpp_library(
name = "ack_states",
headers = [
"AckStates.h",
],
exported_deps = [
"//folly:random",
"//quic:constants",
"//quic/codec:types",
"//quic/common:interval_set",
],
)
mvfst_cpp_library(
name = "cloned_packet_identifier",
srcs = [
"ClonedPacketIdentifier.cpp",
],
headers = [
"ClonedPacketIdentifier.h",
],
deps = [
"//folly/hash:hash",
],
exported_deps = [
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "quic_stream_utilities",
srcs = [
"QuicStreamUtilities.cpp",
],
headers = [
"QuicStreamUtilities.h",
],
exported_deps = [
"//quic:constants",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "quic_priority_queue",
srcs = ["QuicPriorityQueue.cpp"],
headers = ["QuicPriorityQueue.h"],
exported_deps = [
"//folly/container:f14_hash",
"//quic/codec:types",
],
exported_external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "quic_state_machine",
srcs = [
"PendingPathRateLimiter.cpp",
"QuicStreamManager.cpp",
"StateData.cpp",
],
headers = [
"PendingPathRateLimiter.h",
"QuicStreamManager.h",
"QuicStreamUtilities.h",
"StateData.h",
"StreamData.h",
],
exported_deps = [
":ack_event",
":ack_states",
":cloned_packet_identifier",
":loss_state",
":outstanding_packet",
":quic_connection_stats",
":quic_priority_queue",
":retransmission_policy",
":stats_callback",
":transport_settings",
"//folly/container:f14_hash",
"//folly/io:iobuf",
"//folly/io/async:delayed_destruction",
"//quic:constants",
"//quic/codec:codec",
"//quic/codec:types",
"//quic/common:buf_accessor",
"//quic/common:circular_deque",
"//quic/common:optional",
"//quic/common:small_collections",
"//quic/congestion_control:congestion_controller",
"//quic/congestion_control:packet_processor",
"//quic/congestion_control:throttling_signal_provider",
"//quic/dsr:dsr_packetization_request_sender",
"//quic/handshake:handshake",
"//quic/logging:qlogger",
"//quic/observer:socket_observer_types",
],
external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "ack_handler",
srcs = [
"AckHandlers.cpp",
"AckedPacketIterator.cpp",
],
headers = [
"AckHandlers.h",
"AckedPacketIterator.h",
],
deps = [
":state_functions",
":stream_functions",
"//folly:map_util",
"//folly/tracing:static_tracepoint",
"//quic/loss:loss",
],
exported_deps = [
"fbcode//quic:constants",
"fbcode//quic/codec:types",
"fbcode//quic/common:optional",
"fbcode//quic/common:small_collections",
"fbcode//quic/congestion_control:congestion_controller",
"fbcode//quic/state:outstanding_packet",
"fbcode//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "stream_functions",
srcs = [
"QuicStreamFunctions.cpp",
],
headers = [
"QuicStreamFunctions.h",
],
deps = [
":quic_stream_utilities",
"//folly/io:iobuf",
"//quic:exception",
"//quic/flowcontrol:flow_control",
],
exported_deps = [
":quic_state_machine",
],
)
mvfst_cpp_library(
name = "state_functions",
srcs = [
"QuicStateFunctions.cpp",
],
headers = [
"QuicStateFunctions.h",
],
deps = [
":stream_functions",
"//quic/common:time_util",
],
exported_deps = [
":quic_state_machine",
"//quic:constants",
"//quic/codec:pktbuilder",
"//quic/codec:types",
"//quic/common:network_data",
],
)
mvfst_cpp_library(
name = "stats_callback",
headers = [
"QuicTransportStatsCallback.h",
],
exported_deps = [
"//folly/functional:invoke",
"//quic:constants",
"//quic:exception",
"//quic/common:optional",
],
)
mvfst_cpp_library(
name = "pacing_functions",
srcs = [
"QuicPacingFunctions.cpp",
],
headers = [
"QuicPacingFunctions.h",
],
exported_deps = [
":quic_state_machine",
],
)
mvfst_cpp_library(
name = "simple_frame_functions",
srcs = [
"SimpleFrameFunctions.cpp",
],
headers = [
"SimpleFrameFunctions.h",
],
deps = [
":state_functions",
":stream_functions",
"//quic:constants",
"//quic/state/stream:stream",
],
exported_deps = [
":quic_state_machine",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "quic_connection_stats",
srcs = [
],
headers = [
"QuicConnectionStats.h",
],
exported_deps = [
"//folly:network_address",
"//quic:constants",
"//quic/congestion_control:congestion_controller",
],
)
mvfst_cpp_library(
name = "datagram_handler",
srcs = [
"DatagramHandlers.cpp",
],
headers = [
"DatagramHandlers.h",
],
exported_deps = [
":quic_state_machine",
"//quic/codec:types",
],
)
mvfst_cpp_library(
name = "ack_event",
srcs = [
"AckEvent.cpp",
],
headers = [
"AckEvent.h",
],
deps = [
"//folly:map_util",
],
exported_deps = [
":outstanding_packet",
"//quic/codec:types",
"//quic/common:optional",
"//quic/common:small_collections",
"//quic/congestion_control:congestion_controller",
],
)
mvfst_cpp_library(
name = "ack_frequency_functions",
srcs = [
"QuicAckFrequencyFunctions.cpp",
],
headers = [
"QuicAckFrequencyFunctions.h",
],
deps = [
"//quic/common:time_util",
],
exported_deps = [
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_library(
name = "retransmission_policy",
headers = [
"QuicStreamGroupRetransmissionPolicy.h",
],
exported_deps = [
"//quic:constants",
],
)
mvfst_cpp_library(
name = "transport_settings_functions",
srcs = [
"TransportSettingsFunctions.cpp",
],
headers = [
"TransportSettingsFunctions.h",
],
exported_deps = [
":transport_settings",
"//folly:dynamic",
],
)

25
quic/state/stream/BUCK Normal file
View File

@ -0,0 +1,25 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "stream",
srcs = [
"StreamReceiveHandlers.cpp",
"StreamSendHandlers.cpp",
"StreamStateFunctions.cpp",
],
headers = [
"StreamReceiveHandlers.h",
"StreamSendHandlers.h",
"StreamStateFunctions.h",
],
deps = [
"//quic/flowcontrol:flow_control",
],
exported_deps = [
"//quic/state:quic_state_machine",
"//quic/state:quic_stream_utilities",
"//quic/state:stream_functions",
],
)

View File

@ -0,0 +1,37 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_test(
name = "StreamStateMachineTest",
srcs = [
"StreamStateMachineTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
"//quic/api:transport",
"//quic/codec:types",
"//quic/common/events:folly_eventbase",
"//quic/common/test:test_utils",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/state:stream_functions",
"//quic/state/stream:stream",
],
)
mvfst_cpp_test(
name = "StreamStateFunctionsTest",
srcs = [
"StreamStateFunctionsTest.cpp",
],
deps = [
"//quic/common/test:test_utils",
"//quic/dsr:types",
"//quic/dsr/test:mocks",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/logging:file_qlogger",
"//quic/server/state:server",
"//quic/state:stream_functions",
"//quic/state/stream:stream",
],
)

210
quic/state/test/BUCK Normal file
View File

@ -0,0 +1,210 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_benchmark", "mvfst_cpp_library", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "mocks",
headers = [
"MockQuicStats.h",
"Mocks.h",
],
exported_deps = [
"//folly/portability:gmock",
"//quic:constants",
"//quic:exception",
"//quic/congestion_control:congestion_controller_factory",
"//quic/state:quic_state_machine",
"//quic/state:stats_callback",
],
)
mvfst_cpp_test(
name = "acked_packet_iterator_test",
srcs = [
"AckedPacketIteratorTest.cpp",
],
deps = [
"fbcode//quic/common/test:test_utils",
"fbcode//quic/state:ack_handler",
"fbsource//third-party/googletest:gmock",
],
)
mvfst_cpp_test(
name = "QuicStateMachineTest",
srcs = [
"StateDataTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
":mocks",
"//quic/common/test:test_utils",
"//quic/state:loss_state",
"//quic/state:quic_state_machine",
],
)
mvfst_cpp_test(
name = "QuicStreamFunctionsTest",
srcs = [
"QuicStreamFunctionsTest.cpp",
],
supports_static_listing = False,
deps = [
"fbsource//third-party/googletest:gmock",
"//quic/client:state_and_handshake",
"//quic/common/test:test_utils",
"//quic/fizz/client/handshake:fizz_client_handshake",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
"//quic/state:quic_stream_utilities",
"//quic/state:stream_functions",
],
)
mvfst_cpp_test(
name = "AckHandlersTest",
srcs = [
"AckHandlersTest.cpp",
],
supports_static_listing = False,
deps = [
"fbsource//third-party/googletest:gmock",
":ack_event_test_util",
":mocks",
"//quic:constants",
"//quic/api/test:mocks",
"//quic/common/test:test_utils",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/logging/test:mocks",
"//quic/server/state:server",
"//quic/state:ack_handler",
"//quic/state:outstanding_packet",
"//quic/state:quic_state_machine",
"//quic/state/stream:stream",
],
)
mvfst_cpp_test(
name = "QuicStateFunctionsTest",
srcs = [
"QuicStateFunctionsTest.cpp",
],
supports_static_listing = False,
deps = [
"fbsource//third-party/googletest:gmock",
":mocks",
"//quic/codec:types",
"//quic/common/test:test_utils",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
"//quic/state:outstanding_packet",
"//quic/state:state_functions",
"//quic/state/stream:stream",
],
)
mvfst_cpp_test(
name = "QuicPacingFunctionsTest",
srcs = [
"QuicPacingFunctionsTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/state:pacing_functions",
],
)
mvfst_cpp_test(
name = "TransportSettingsFunctionsTest",
srcs = [
"TransportSettingsFunctionsTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/state:transport_settings_functions",
],
)
mvfst_cpp_test(
name = "QuicStreamManagerTest",
srcs = [
"QuicPriorityQueueTest.cpp",
"QuicStreamManagerTest.cpp",
],
supports_static_listing = False,
deps = [
"fbsource//third-party/googletest:gmock",
":mocks",
"//quic/fizz/server/handshake:fizz_server_handshake",
"//quic/server/state:server",
"//quic/state:quic_priority_queue",
"//quic/state:quic_state_machine",
"//quic/state:quic_stream_utilities",
"//quic/state/stream:stream",
],
)
mvfst_cpp_test(
name = "ClonedPacketIdentifierTest",
srcs = [
"ClonedPacketIdentifierTest.cpp",
],
deps = [
"//folly/portability:gtest",
"//quic/state:cloned_packet_identifier",
],
)
mvfst_cpp_test(
name = "OutstandingPacketTest",
srcs = [
"OutstandingPacketTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
":mocks",
"//quic:constants",
"//quic/api/test:mocks",
"//quic/common/test:test_utils",
"//quic/logging/test:mocks",
"//quic/state:outstanding_packet",
"//quic/state/stream:stream",
],
)
mvfst_cpp_library(
name = "ack_event_test_util",
srcs = [
"AckEventTestUtil.cpp",
],
headers = [
"AckEventTestUtil.h",
],
exported_deps = [
"fbsource//third-party/googletest:gmock",
"fbsource//third-party/googletest:gtest",
"//quic/state:ack_event",
],
)
mvfst_cpp_benchmark(
name = "quic_priority_queue_benchmark",
srcs = ["QuicPriorityQueueBenchmark.cpp"],
deps = [
"//common/init:init",
"//folly:benchmark",
"//quic/state:quic_priority_queue",
],
)
mvfst_cpp_test(
name = "stream_data_test",
srcs = [
"StreamDataTest.cpp",
],
deps = [
"fbsource//third-party/googletest:gmock",
"//quic/state:quic_state_machine",
],
)

103
quic/tools/tperf/BUCK Normal file
View File

@ -0,0 +1,103 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_binary", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "tperf_client",
srcs = [
"TperfClient.cpp",
],
headers = [
"TperfClient.h",
],
deps = [
"//fizz/crypto:utils",
"//folly/io/async:async_udp_socket",
"//quic/common/test:test_client_utils",
"//quic/common/udpsocket:folly_async_udp_socket",
"//quic/fizz/client/handshake:fizz_client_handshake",
],
exported_deps = [
"//folly/io/async:async_base",
"//folly/stats:histogram",
"//quic/client:client",
"//quic/common/events:folly_eventbase",
],
)
mvfst_cpp_library(
name = "tperf_server",
srcs = [
"TperfServer.cpp",
],
headers = [
"TperfServer.h",
],
deps = [
":pacing_observer",
":tperf_dsr_sender",
"//fizz/crypto:utils",
"//folly/stats:histogram",
"//quic/common/test:test_utils",
"//quic/congestion_control:static_cwnd_congestion_controller",
],
exported_deps = [
"//quic/logging:file_qlogger",
"//quic/observer:socket_observer_types",
"//quic/server:accept_observer",
"//quic/server:server",
],
)
mvfst_cpp_binary(
name = "tperf",
srcs = [
"tperf.cpp",
],
deps = [
":tperf_client",
":tperf_server",
"//folly/init:init",
"//folly/portability:gflags",
] + select({
"DEFAULT": ["//folly:memcpy-use"],
"ovr_config//os:windows": [],
}),
external_deps = [
"glog",
],
)
mvfst_cpp_library(
name = "tperf_dsr_sender",
srcs = [
"TperfDSRSender.cpp",
],
headers = [
"TperfDSRSender.h",
],
deps = [
"//quic/dsr/backend/test:test_utils",
],
exported_deps = [
"//folly:network_address",
"//quic/common/udpsocket:quic_async_udp_socket",
"//quic/dsr:dsr_packetization_request_sender",
"//quic/dsr:types",
"//quic/dsr/backend:dsr_packetizer",
"//quic/server:server",
],
)
mvfst_cpp_library(
name = "pacing_observer",
headers = [
"PacingObserver.h",
],
exported_deps = [
"//quic:constants",
"//quic/api:transport",
"//quic/congestion_control:bandwidth",
"//quic/state:quic_state_machine",
],
)

View File

@ -0,0 +1,15 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_test")
oncall("traffic_protocols")
mvfst_cpp_test(
name = "PacingObserverTest",
srcs = [
"PacingObserverTest.cpp",
],
deps = [
"//quic/common/test:test_utils",
"//quic/logging/test:mocks",
"//quic/tools/tperf:pacing_observer",
],
)

65
quic/xsk/BUCK Normal file
View File

@ -0,0 +1,65 @@
load("@fbcode//quic:defs.bzl", "mvfst_cpp_library")
oncall("traffic_protocols")
mvfst_cpp_library(
name = "xsk_lib",
srcs = [
"packet_utils.cpp",
"xsk_lib.cpp",
],
headers = [
"packet_utils.h",
"xsk_lib.h",
],
deps = [
"//folly:benchmark",
],
exported_deps = [
"//folly:network_address",
],
external_deps = [
("glibc", None, "rt"),
],
)
mvfst_cpp_library(
name = "xsk_container",
srcs = [
"BaseXskContainer.cpp",
"HashingXskContainer.cpp",
"ThreadLocalXskContainer.cpp",
],
headers = [
"BaseXskContainer.h",
"HashingXskContainer.h",
"ThreadLocalXskContainer.h",
],
deps = [
],
exported_deps = [
":xsk_sender",
"//folly:thread_local",
"//folly/container:f14_hash",
],
)
mvfst_cpp_library(
name = "xsk_sender",
srcs = ["XskSender.cpp"],
headers = [
"XskSender.h",
],
deps = [
"//folly:benchmark",
"//folly:string",
],
exported_deps = [
":xsk_lib",
"//folly:expected",
"//folly:network_address",
"//folly/container:f14_hash",
"//folly/io:iobuf",
"//quic/common:optional",
],
)