Henrik Boström f3a381adcd Use kHigh timer precision for 'delayed-ack' timers.
In SCTP, sending ACKs at the right time is presumably important in order
not to cause unnecessary retransmissions.

This CL sets the ACK timers to use high timer precision. This unblocks
experimentally lowering the precision of the default, "low", timers in
WebRTC.

// All bots are green, but mac_chromium_compile is randomly timing out
// independently of this CL and has been doing so for several days...
NOTRY=True

Bug: webrtc:13604
Change-Id: I1c81e3d0eeb477c3e00277d35649114c5edd249c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249090
Reviewed-by: Victor Boivie <boivie@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35813}
2022-01-27 11:09:24 +00:00

276 lines
7.2 KiB
Plaintext

# Copyright (c) 2021 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS. All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.
import("../../../webrtc.gni")
rtc_source_set("context") {
sources = [ "context.h" ]
deps = [
"../common:internal_types",
"../packet:sctp_packet",
"../public:socket",
"../public:types",
]
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}
rtc_library("heartbeat_handler") {
deps = [
":context",
"../../../api:array_view",
"../../../rtc_base",
"../../../rtc_base:checks",
"../../../rtc_base:rtc_base_approved",
"../packet:bounded_io",
"../packet:chunk",
"../packet:parameter",
"../packet:sctp_packet",
"../public:socket",
"../public:types",
"../timer",
]
sources = [
"heartbeat_handler.cc",
"heartbeat_handler.h",
]
absl_deps = [
"//third_party/abseil-cpp/absl/functional:bind_front",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_library("stream_reset_handler") {
deps = [
":context",
"../../../api:array_view",
"../../../rtc_base",
"../../../rtc_base:checks",
"../../../rtc_base:rtc_base_approved",
"../../../rtc_base/containers:flat_set",
"../common:internal_types",
"../common:str_join",
"../packet:chunk",
"../packet:parameter",
"../packet:sctp_packet",
"../packet:tlv_trait",
"../public:socket",
"../public:types",
"../rx:data_tracker",
"../rx:reassembly_queue",
"../timer",
"../tx:retransmission_queue",
]
sources = [
"stream_reset_handler.cc",
"stream_reset_handler.h",
]
absl_deps = [
"//third_party/abseil-cpp/absl/functional:bind_front",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_library("packet_sender") {
deps = [
"../packet:sctp_packet",
"../public:socket",
"../public:types",
"../timer",
]
sources = [
"packet_sender.cc",
"packet_sender.h",
]
absl_deps = []
}
rtc_library("transmission_control_block") {
deps = [
":context",
":heartbeat_handler",
":packet_sender",
":stream_reset_handler",
"../../../api:array_view",
"../../../api/task_queue:task_queue",
"../../../rtc_base",
"../../../rtc_base:checks",
"../../../rtc_base:rtc_base_approved",
"../common:sequence_numbers",
"../packet:chunk",
"../packet:sctp_packet",
"../public:socket",
"../public:types",
"../rx:data_tracker",
"../rx:reassembly_queue",
"../timer",
"../tx:retransmission_error_counter",
"../tx:retransmission_queue",
"../tx:retransmission_timeout",
"../tx:send_queue",
]
sources = [
"capabilities.h",
"transmission_control_block.cc",
"transmission_control_block.h",
]
absl_deps = [
"//third_party/abseil-cpp/absl/functional:bind_front",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_library("dcsctp_socket") {
deps = [
":context",
":heartbeat_handler",
":packet_sender",
":stream_reset_handler",
":transmission_control_block",
"../../../api:array_view",
"../../../api:refcountedbase",
"../../../api:scoped_refptr",
"../../../api/task_queue:task_queue",
"../../../rtc_base",
"../../../rtc_base:checks",
"../../../rtc_base:rtc_base_approved",
"../common:internal_types",
"../packet:bounded_io",
"../packet:chunk",
"../packet:chunk_validators",
"../packet:data",
"../packet:error_cause",
"../packet:parameter",
"../packet:sctp_packet",
"../packet:tlv_trait",
"../public:socket",
"../public:types",
"../rx:data_tracker",
"../rx:reassembly_queue",
"../timer",
"../tx:retransmission_error_counter",
"../tx:retransmission_queue",
"../tx:retransmission_timeout",
"../tx:rr_send_queue",
"../tx:send_queue",
]
sources = [
"callback_deferrer.cc",
"callback_deferrer.h",
"dcsctp_socket.cc",
"dcsctp_socket.h",
"state_cookie.cc",
"state_cookie.h",
]
absl_deps = [
"//third_party/abseil-cpp/absl/functional:bind_front",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
}
if (rtc_include_tests) {
rtc_source_set("mock_callbacks") {
testonly = true
sources = [ "mock_dcsctp_socket_callbacks.h" ]
deps = [
"../../../api:array_view",
"../../../api/task_queue:task_queue",
"../../../rtc_base:logging",
"../../../rtc_base:rtc_base_approved",
"../../../test:test_support",
"../public:socket",
"../public:types",
"../timer",
]
absl_deps = [
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_source_set("mock_context") {
testonly = true
sources = [ "mock_context.h" ]
deps = [
":context",
":mock_callbacks",
"../../../test:test_support",
"../common:internal_types",
"../packet:sctp_packet",
"../public:socket",
"../public:types",
]
absl_deps = [
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_library("dcsctp_socket_unittests") {
testonly = true
deps = [
":dcsctp_socket",
":heartbeat_handler",
":mock_callbacks",
":mock_context",
":packet_sender",
":stream_reset_handler",
"../../../api:array_view",
"../../../api:create_network_emulation_manager",
"../../../api:network_emulation_manager_api",
"../../../api/task_queue:task_queue",
"../../../api/units:time_delta",
"../../../call:simulated_network",
"../../../rtc_base:checks",
"../../../rtc_base:gunit_helpers",
"../../../rtc_base:rtc_base",
"../../../rtc_base:rtc_base_approved",
"../../../rtc_base:rtc_base_tests_utils",
"../../../rtc_base:socket_address",
"../../../rtc_base/task_utils:to_queued_task",
"../../../test:test_support",
"../common:handover_testing",
"../common:internal_types",
"../packet:chunk",
"../packet:error_cause",
"../packet:parameter",
"../packet:sctp_packet",
"../packet:tlv_trait",
"../public:socket",
"../public:types",
"../public:utils",
"../rx:data_tracker",
"../rx:reassembly_queue",
"../testing:data_generator",
"../testing:testing_macros",
"../timer",
"../timer:task_queue_timeout",
"../tx:mock_send_queue",
"../tx:retransmission_queue",
]
absl_deps = [
"//third_party/abseil-cpp/absl/flags:flag",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
]
sources = [
"dcsctp_socket_network_test.cc",
"dcsctp_socket_test.cc",
"heartbeat_handler_test.cc",
"packet_sender_test.cc",
"state_cookie_test.cc",
"stream_reset_handler_test.cc",
]
}
}