Reland "Refactor rtc_base build targets."
This is a reland of 69241a93fb14f6527a26d5c94dde879013012d2a
Fix: The problem was related to NO_MAIN_THREAD_WRAPPING, which
affects https://source.chromium.org/chromium/chromium/src/+/master:third_party/webrtc/rtc_base/thread.cc;l=257-263;drc=7acc2d9fe3a6e3c4d8881d2bdfc9b8968a724cd5.
The original CL didn't attach the definition of the macro
NO_MAIN_THREAD_WRAPPING when building for Chromium (which doesn't have
to be related to //rtc_base anymore but to //rtc_base:threading).
Original change's description:
> Refactor rtc_base build targets.
>
> The "//rtc_base:rtc_base" build target has historically been one of the
> biggest targets in the WebRTC build. Big targets are the main source of
> circular dependencies and non-API types leakage.
>
> This CL is a step forward into splitting "//rtc_base:rtc_base" into
> smaller targets (as originally started in 2018).
>
> The only non-automated changes are (like re-wiring the build system):
> * The creation of //rtc_base/async_resolver.{h,cc} which allows to
> break a circular dependency (is has been extracted from
> //rtc_base/net_helpers.{h,cc}).
> * The creation of //rtc_base/internal/default_socket_server.{h,cc} to
> break another circular dependency.
>
> Bug: webrtc:9987
> Change-Id: I0c8f5e7efe2c8fd8e6bffa0d6dd2dd494cf3df02
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/196903
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#32941}
Bug: webrtc:9987
Change-Id: I7cdf49d2aac8357f1f50f90010bf2c2f62fa19f6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202021
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33001}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index f02c5fd..3c73d51 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -52,6 +52,7 @@
"../pc:peerconnection",
"../rtc_base",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:threading",
"audio:audio_mixer_api",
"audio_codecs:audio_codecs_api",
"task_queue:default_task_queue_factory",
@@ -174,6 +175,7 @@
":rtp_parameters",
":rtp_transceiver_direction",
":scoped_refptr",
+ "../rtc_base:network_constants",
"adaptation:resource_adaptation_api",
"audio:audio_mixer_api",
"audio_codecs:audio_codecs_api",
@@ -204,7 +206,10 @@
"../rtc_base",
"../rtc_base:checks",
"../rtc_base:deprecation",
+ "../rtc_base:ip_address",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:socket_address",
+ "../rtc_base:threading",
"../rtc_base/system:rtc_export",
]
absl_deps = [
@@ -248,6 +253,7 @@
"packet_socket_factory.h",
]
deps = [
+ "../rtc_base:async_resolver_interface",
"../rtc_base:rtc_base",
"../rtc_base/system:rtc_export",
]
@@ -383,6 +389,7 @@
":video_quality_analyzer_api",
"../media:rtc_media_base",
"../rtc_base:rtc_base",
+ "../rtc_base:threading",
"rtc_event_log",
"task_queue",
"transport:network_control",
@@ -600,6 +607,8 @@
":time_controller",
"../call:simulated_network",
"../rtc_base",
+ "../rtc_base:network_constants",
+ "../rtc_base:threading",
"test/network_emulation",
"units:data_rate",
"units:data_size",
@@ -617,6 +626,7 @@
deps = [
"../modules/utility",
"../rtc_base",
+ "../rtc_base:threading",
"../rtc_base/synchronization:yield_policy",
"../system_wrappers",
"task_queue",
@@ -670,6 +680,7 @@
":scoped_refptr",
"../p2p:rtc_p2p",
"../rtc_base",
+ "../rtc_base:threading",
"../rtc_base/system:rtc_export",
"rtc_event_log:rtc_event_log",
]
diff --git a/api/test/network_emulation/BUILD.gn b/api/test/network_emulation/BUILD.gn
index 58cd27d..a8044d7 100644
--- a/api/test/network_emulation/BUILD.gn
+++ b/api/test/network_emulation/BUILD.gn
@@ -21,7 +21,9 @@
"../..:array_view",
"../../../rtc_base",
"../../../rtc_base:checks",
+ "../../../rtc_base:ip_address",
"../../../rtc_base:rtc_base_approved",
+ "../../../rtc_base:socket_address",
"../../numerics",
"../../task_queue",
"../../units:data_rate",
diff --git a/api/transport/BUILD.gn b/api/transport/BUILD.gn
index 7bcda8b..7d23adc 100644
--- a/api/transport/BUILD.gn
+++ b/api/transport/BUILD.gn
@@ -108,8 +108,10 @@
deps = [
"../../api:array_view",
"../../rtc_base:checks",
+ "../../rtc_base:ip_address",
"../../rtc_base:rtc_base",
"../../rtc_base:rtc_base_approved",
+ "../../rtc_base:socket_address",
]
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}
@@ -147,6 +149,7 @@
":stun_types",
"../../rtc_base",
"../../rtc_base:rtc_base_approved",
+ "../../rtc_base:socket_address",
"../../test:test_support",
"//testing/gtest",
]
diff --git a/audio/BUILD.gn b/audio/BUILD.gn
index 6901e33..1fea09c 100644
--- a/audio/BUILD.gn
+++ b/audio/BUILD.gn
@@ -90,6 +90,7 @@
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_task_queue",
"../rtc_base:safe_minmax",
+ "../rtc_base:threading",
"../rtc_base/experiments:field_trial_parser",
"../rtc_base/synchronization:mutex",
"../rtc_base/synchronization:sequence_checker",
diff --git a/call/BUILD.gn b/call/BUILD.gn
index cef43f4..7730382 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -504,6 +504,7 @@
"../rtc_base:rtc_base_approved",
"../rtc_base:task_queue_for_test",
"../rtc_base:task_queue_for_test",
+ "../rtc_base:threading",
"../rtc_base/synchronization:mutex",
"../rtc_base/task_utils:repeating_task",
"../system_wrappers",
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index c267896..a08ab46 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -686,6 +686,8 @@
"../p2p:rtc_p2p",
"../pc:video_track_source",
"../rtc_base:checks",
+ "../rtc_base:net_helpers",
+ "../rtc_base:threading",
"../rtc_base/third_party/sigslot",
"../system_wrappers:field_trial",
"../test:field_trial",
@@ -777,7 +779,11 @@
"../p2p:rtc_p2p",
"../pc:rtc_pc",
"../rtc_base",
+ "../rtc_base:ip_address",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:socket_address",
+ "../rtc_base:socket_server",
+ "../rtc_base:threading",
]
}
rtc_executable("stunserver") {
@@ -789,6 +795,9 @@
"../pc:rtc_pc",
"../rtc_base",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:socket_address",
+ "../rtc_base:socket_server",
+ "../rtc_base:threading",
]
}
}
@@ -912,6 +921,8 @@
"../rtc_base",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:socket_address",
+ "../rtc_base:threading",
"//third_party/abseil-cpp/absl/flags:flag",
"//third_party/abseil-cpp/absl/flags:parse",
]
diff --git a/examples/androidvoip/BUILD.gn b/examples/androidvoip/BUILD.gn
index 649e601..31b20d3 100644
--- a/examples/androidvoip/BUILD.gn
+++ b/examples/androidvoip/BUILD.gn
@@ -56,6 +56,9 @@
deps = [
":generated_jni",
+ "../../rtc_base:socket_address",
+ "../../rtc_base:socket_server",
+ "../../rtc_base:threading",
"//api:transport_api",
"//api/audio_codecs:audio_codecs_api",
"//api/audio_codecs:builtin_audio_decoder_factory",
diff --git a/logging/BUILD.gn b/logging/BUILD.gn
index 8eb5631..9fccf5c 100644
--- a/logging/BUILD.gn
+++ b/logging/BUILD.gn
@@ -288,6 +288,7 @@
"../api/rtc_event_log",
"../rtc_base",
"../rtc_base:checks",
+ "../rtc_base:threading",
]
}
diff --git a/media/BUILD.gn b/media/BUILD.gn
index db5028f..b253a61 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -113,6 +113,7 @@
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_task_queue",
"../rtc_base:sanitizer",
+ "../rtc_base:socket",
"../rtc_base:stringutils",
"../rtc_base/synchronization:mutex",
"../rtc_base/synchronization:sequence_checker",
@@ -323,6 +324,7 @@
"../rtc_base:ignore_wundef",
"../rtc_base:rtc_task_queue",
"../rtc_base:stringutils",
+ "../rtc_base:threading",
"../rtc_base/experiments:field_trial_parser",
"../rtc_base/experiments:min_video_bitrate_experiment",
"../rtc_base/experiments:normalize_simulcast_size_experiment",
@@ -410,6 +412,7 @@
"../p2p:rtc_p2p",
"../rtc_base",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:threading",
"../rtc_base/synchronization:mutex",
"../rtc_base/task_utils:pending_task_safety_flag",
"../rtc_base/task_utils:to_queued_task",
@@ -486,6 +489,7 @@
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_task_queue",
"../rtc_base:stringutils",
+ "../rtc_base:threading",
"../rtc_base/synchronization:mutex",
"../rtc_base/third_party/sigslot",
"../test:test_support",
@@ -595,6 +599,7 @@
"../rtc_base:rtc_base_tests_utils",
"../rtc_base:rtc_task_queue",
"../rtc_base:stringutils",
+ "../rtc_base:threading",
"../rtc_base/experiments:min_video_bitrate_experiment",
"../rtc_base/synchronization:mutex",
"../rtc_base/third_party/sigslot",
diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn
index dbb1882..f2f28a7 100644
--- a/modules/audio_processing/BUILD.gn
+++ b/modules/audio_processing/BUILD.gn
@@ -367,6 +367,7 @@
"../../rtc_base:rtc_base_tests_utils",
"../../rtc_base:safe_minmax",
"../../rtc_base:task_queue_for_test",
+ "../../rtc_base:threading",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/system:arch",
"../../rtc_base/system:file_wrapper",
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index b706c6b..2373b9f 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -189,6 +189,7 @@
"../../rtc_base:rtc_base_approved",
"../../rtc_base:rtc_numerics",
"../../rtc_base:rtc_task_queue",
+ "../../rtc_base:threading",
"../../rtc_base/experiments:alr_experiment",
"../../rtc_base/experiments:field_trial_parser",
"../../rtc_base/experiments:jitter_upper_bound_experiment",
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn
index d4330ef..5838f31 100644
--- a/p2p/BUILD.gn
+++ b/p2p/BUILD.gn
@@ -96,8 +96,17 @@
"../api/transport:stun_types",
"../logging:ice_log",
"../rtc_base",
+ "../rtc_base:async_resolver_interface",
+ "../rtc_base:async_socket",
"../rtc_base:checks",
+ "../rtc_base:ip_address",
+ "../rtc_base:net_helpers",
+ "../rtc_base:network_constants",
"../rtc_base:rtc_numerics",
+ "../rtc_base:socket",
+ "../rtc_base:socket_address",
+ "../rtc_base:socket_server",
+ "../rtc_base:threading",
"../rtc_base/experiments:field_trial_parser",
"../rtc_base/synchronization:sequence_checker",
"../rtc_base/system:no_unique_address",
@@ -148,6 +157,8 @@
deps = [
":rtc_p2p",
"../rtc_base",
+ "../rtc_base:net_helpers",
+ "../rtc_base:threading",
]
}
@@ -173,9 +184,14 @@
"../api/crypto:options",
"../api/transport:stun_types",
"../rtc_base",
+ "../rtc_base:async_resolver_interface",
+ "../rtc_base:async_socket",
"../rtc_base:gunit_helpers",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_base_tests_utils",
+ "../rtc_base:socket_address",
+ "../rtc_base:socket_server",
+ "../rtc_base:threading",
"../rtc_base/third_party/sigslot",
"../test:test_support",
]
@@ -221,11 +237,18 @@
"../api/transport:stun_types",
"../api/units:time_delta",
"../rtc_base",
+ "../rtc_base:async_socket",
"../rtc_base:checks",
"../rtc_base:gunit_helpers",
+ "../rtc_base:ip_address",
+ "../rtc_base:net_helpers",
+ "../rtc_base:network_constants",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_base_tests_utils",
+ "../rtc_base:socket",
+ "../rtc_base:socket_address",
"../rtc_base:testclient",
+ "../rtc_base:threading",
"../rtc_base/network:sent_packet",
"../rtc_base/third_party/sigslot",
"../system_wrappers:metrics",
@@ -256,6 +279,8 @@
"../rtc_base",
"../rtc_base:checks",
"../rtc_base:rtc_base_tests_utils",
+ "../rtc_base:socket_address",
+ "../rtc_base:threading",
"../rtc_base/third_party/sigslot",
]
absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
@@ -273,7 +298,11 @@
"../api:packet_socket_factory",
"../api/transport:stun_types",
"../rtc_base",
+ "../rtc_base:async_resolver_interface",
"../rtc_base:checks",
+ "../rtc_base:ip_address",
+ "../rtc_base:socket_address",
+ "../rtc_base:threading",
"../rtc_base/system:rtc_export",
]
}
@@ -290,6 +319,7 @@
"../rtc_base",
"../rtc_base:checks",
"../rtc_base:gunit_helpers",
+ "../rtc_base:ip_address",
"../rtc_base:rtc_base_tests_utils",
"../test:test_support",
"//testing/gtest",
diff --git a/p2p/base/basic_async_resolver_factory.cc b/p2p/base/basic_async_resolver_factory.cc
index 9d8266e..027358b 100644
--- a/p2p/base/basic_async_resolver_factory.cc
+++ b/p2p/base/basic_async_resolver_factory.cc
@@ -10,7 +10,7 @@
#include "p2p/base/basic_async_resolver_factory.h"
-#include "rtc_base/net_helpers.h"
+#include "rtc_base/async_resolver.h"
namespace webrtc {
diff --git a/p2p/base/basic_packet_socket_factory.cc b/p2p/base/basic_packet_socket_factory.cc
index ebc11bb..232e58b 100644
--- a/p2p/base/basic_packet_socket_factory.cc
+++ b/p2p/base/basic_packet_socket_factory.cc
@@ -15,6 +15,7 @@
#include <string>
#include "p2p/base/async_stun_tcp_socket.h"
+#include "rtc_base/async_resolver.h"
#include "rtc_base/async_tcp_socket.h"
#include "rtc_base/async_udp_socket.h"
#include "rtc_base/checks.h"
diff --git a/p2p/base/stun_port.cc b/p2p/base/stun_port.cc
index 4e1a1f6..7a76af5 100644
--- a/p2p/base/stun_port.cc
+++ b/p2p/base/stun_port.cc
@@ -17,11 +17,11 @@
#include "p2p/base/connection.h"
#include "p2p/base/p2p_constants.h"
#include "p2p/base/port_allocator.h"
+#include "rtc_base/async_resolver_interface.h"
#include "rtc_base/checks.h"
#include "rtc_base/helpers.h"
#include "rtc_base/ip_address.h"
#include "rtc_base/logging.h"
-#include "rtc_base/net_helpers.h"
#include "rtc_base/strings/string_builder.h"
namespace cricket {
diff --git a/p2p/base/turn_port.h b/p2p/base/turn_port.h
index a9ec434..6f9caaf 100644
--- a/p2p/base/turn_port.h
+++ b/p2p/base/turn_port.h
@@ -25,6 +25,7 @@
#include "p2p/client/basic_port_allocator.h"
#include "rtc_base/async_invoker.h"
#include "rtc_base/async_packet_socket.h"
+#include "rtc_base/async_resolver_interface.h"
#include "rtc_base/ssl_certificate.h"
namespace webrtc {
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 143ce25..9e296b5 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -114,7 +114,9 @@
"../rtc_base:checks",
"../rtc_base:deprecation",
"../rtc_base:rtc_task_queue",
+ "../rtc_base:socket_address",
"../rtc_base:stringutils",
+ "../rtc_base:threading",
"../rtc_base/synchronization:mutex",
"../rtc_base/synchronization:sequence_checker",
"../rtc_base/system:file_wrapper",
@@ -277,9 +279,13 @@
"../rtc_base:callback_list",
"../rtc_base:checks",
"../rtc_base:deprecation",
+ "../rtc_base:ip_address",
+ "../rtc_base:network_constants",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_operations_chain",
"../rtc_base:safe_minmax",
+ "../rtc_base:socket_address",
+ "../rtc_base:threading",
"../rtc_base:weak_ptr",
"../rtc_base/experiments:field_trial_parser",
"../rtc_base/network:sent_packet",
@@ -324,6 +330,7 @@
"../p2p:rtc_p2p",
"../rtc_base",
"../rtc_base:checks",
+ "../rtc_base:threading",
]
}
@@ -338,6 +345,7 @@
"../api:media_stream_interface",
"../api:rtc_error",
"../rtc_base",
+ "../rtc_base:threading",
"../rtc_base/synchronization:sequence_checker",
]
}
@@ -400,6 +408,7 @@
"../media:rtc_media_base",
"../rtc_base",
"../rtc_base:checks",
+ "../rtc_base:threading",
"../rtc_base/third_party/sigslot",
]
absl_deps = [
@@ -436,6 +445,7 @@
"../rtc_base:logging",
"../rtc_base:rtc_base",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:threading",
]
absl_deps = [
"//third_party/abseil-cpp/absl/algorithm:container",
@@ -466,6 +476,7 @@
"../rtc_base",
"../rtc_base:checks",
"../rtc_base:refcount",
+ "../rtc_base:threading",
]
absl_deps = [
"//third_party/abseil-cpp/absl/algorithm:container",
@@ -498,6 +509,7 @@
"../rtc_base",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:threading",
]
absl_deps = [
"//third_party/abseil-cpp/absl/algorithm:container",
@@ -548,6 +560,7 @@
"../rtc_base:checks",
"../rtc_base:refcount",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:threading",
]
}
@@ -593,6 +606,7 @@
"../rtc_base:checks",
"../rtc_base:refcount",
"../rtc_base:safe_minmax",
+ "../rtc_base:threading",
]
absl_deps = [
"//third_party/abseil-cpp/absl/algorithm:container",
@@ -617,6 +631,7 @@
"../rtc_base:rtc_base_approved",
"../rtc_base:safe_conversions",
"../rtc_base:stringutils",
+ "../rtc_base:threading",
"../rtc_base/synchronization:mutex",
]
absl_deps = [
@@ -680,6 +695,7 @@
"../api:libjingle_peerconnection_api",
"../rtc_base:checks",
"../rtc_base:rtc_base",
+ "../rtc_base:threading",
]
absl_deps = [
"//third_party/abseil-cpp/absl/algorithm:container",
@@ -803,6 +819,7 @@
"../rtc_base:gunit_helpers",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_base_tests_utils",
+ "../rtc_base:threading",
"../rtc_base/third_party/sigslot",
"../system_wrappers:metrics",
"../test:field_trial",
@@ -851,6 +868,8 @@
"../rtc_base:checks",
"../rtc_base:gunit_helpers",
"../rtc_base:rtc_base_tests_utils",
+ "../rtc_base:socket_address",
+ "../rtc_base:threading",
"../system_wrappers",
"../test:perf_test",
"../test:test_support",
@@ -951,6 +970,7 @@
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_task_queue",
"../rtc_base:task_queue_for_test",
+ "../rtc_base:threading",
"../rtc_base/synchronization:mutex",
"../rtc_base/synchronization:sequence_checker",
"../rtc_base/task_utils:repeating_task",
@@ -1066,8 +1086,11 @@
"../p2p:fake_port_allocator",
"../rtc_base:checks",
"../rtc_base:gunit_helpers",
+ "../rtc_base:ip_address",
"../rtc_base:rtc_base_tests_utils",
"../rtc_base:rtc_json",
+ "../rtc_base:socket_address",
+ "../rtc_base:threading",
"../rtc_base/synchronization:mutex",
"../rtc_base/third_party/base64",
"../rtc_base/third_party/sigslot",
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 3448504..184c298 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -15,7 +15,7 @@
import("//build/config/android/rules.gni")
}
-config("rtc_base_chromium_config") {
+config("threading_chromium_config") {
defines = [ "NO_MAIN_THREAD_WRAPPING" ]
}
@@ -666,139 +666,220 @@
}
rtc_source_set("async_resolver") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # async_resolver source files (see
- # https://webrtc-review.googlesource.com/c/src/+/196903).
- sources = [ "async_resolver.h" ]
+ # TODO(bugs.webrtc.org/9987): Remove when downstream clients have
+ # been redirected on //rtc_base:threading.
+ sources = []
}
-rtc_source_set("net_helpers") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "net_helpers.cc",
- # "net_helpers.h",
- # ]
+rtc_library("net_helpers") {
+ sources = [
+ "net_helpers.cc",
+ "net_helpers.h",
+ ]
+ deps = []
+ if (is_android) {
+ deps += [ ":ifaddrs_android" ]
+ }
+ if (is_win) {
+ deps += [ ":win32" ]
+ }
}
-rtc_source_set("async_resolver_interface") {
+rtc_library("async_resolver_interface") {
visibility = [ "*" ]
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "async_resolver_interface.cc",
- # "async_resolver_interface.h",
- # ]
+ sources = [
+ "async_resolver_interface.cc",
+ "async_resolver_interface.h",
+ ]
+ deps = [
+ ":socket_address",
+ "system:rtc_export",
+ "third_party/sigslot",
+ ]
}
-rtc_source_set("ip_address") {
+rtc_library("ip_address") {
visibility = [ "*" ]
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "ip_address.cc",
- # "ip_address.h",
- # ]
+ sources = [
+ "ip_address.cc",
+ "ip_address.h",
+ ]
+ deps = [
+ ":net_helpers",
+ ":rtc_base_approved",
+ ":stringutils",
+ "system:rtc_export",
+ ]
+ if (is_win) {
+ deps += [ ":win32" ]
+ }
}
-rtc_source_set("socket_address") {
+rtc_library("socket_address") {
visibility = [ "*" ]
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "socket_address.cc",
- # "socket_address.h",
- # ]
+ sources = [
+ "socket_address.cc",
+ "socket_address.h",
+ ]
+ deps = [
+ ":checks",
+ ":ip_address",
+ ":logging",
+ ":net_helpers",
+ ":rtc_base_approved",
+ ":safe_conversions",
+ ":stringutils",
+ "system:rtc_export",
+ ]
+ if (is_win) {
+ deps += [ ":win32" ]
+ }
}
-rtc_source_set("null_socket_server") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "null_socket_server.cc",
- # "null_socket_server.h",
- # ]
+rtc_library("null_socket_server") {
+ sources = [
+ "null_socket_server.cc",
+ "null_socket_server.h",
+ ]
+ deps = [
+ ":async_socket",
+ ":checks",
+ ":rtc_event",
+ ":socket",
+ ":socket_server",
+ "system:rtc_export",
+ ]
}
rtc_source_set("socket_server") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "socket_server.h",
- # ]
+ sources = [ "socket_server.h" ]
+ deps = [ ":socket_factory" ]
}
-rtc_source_set("threading") {
+rtc_library("threading") {
visibility = [ "*" ]
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "asyncresolver.cc",
- # "asyncresolver.h",
- # "defaultsocketserver.cc",
- # "defaultsocketserver.h",
- # "message_handler.cc",
- # "message_handler.h",
- # "network_monitor.cc",
- # "network_monitor.h",
- # "network_monitor_factory.cc",
- # "network_monitor_factory.h",
- # "physical_socket_server.cc",
- # "physical_socket_server.h",
- # "signal_thread.cc",
- # "signal_thread.h",
- # "thread.cc",
- # "thread.h",
- # ]
+
+ if (build_with_chromium) {
+ public_configs = [ ":threading_chromium_config" ]
+ }
+
+ sources = [
+ "async_resolver.cc",
+ "async_resolver.h",
+ "internal/default_socket_server.cc",
+ "internal/default_socket_server.h",
+ "message_handler.cc",
+ "message_handler.h",
+ "network_monitor.cc",
+ "network_monitor.h",
+ "network_monitor_factory.cc",
+ "network_monitor_factory.h",
+ "physical_socket_server.cc",
+ "physical_socket_server.h",
+
+ # "signal_thread.cc",
+ # "signal_thread.h",
+ "thread.cc",
+ "thread.h",
+ "thread_message.h",
+ ]
+ absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
+ deps = [
+ ":async_resolver_interface",
+ ":atomicops",
+ ":checks",
+ ":criticalsection",
+ ":ip_address",
+ ":logging",
+ ":macromagic",
+ ":network_constants",
+ ":null_socket_server",
+ ":platform_thread_types",
+ ":rtc_base_approved",
+ ":rtc_event",
+ ":rtc_task_queue",
+ ":socket_address",
+ ":socket_server",
+ ":timeutils",
+ "../api:function_view",
+ "../api:scoped_refptr",
+ "../api/task_queue",
+ "synchronization:sequence_checker",
+ "system:no_unique_address",
+ "system:rtc_export",
+ "task_utils:pending_task_safety_flag",
+ "task_utils:to_queued_task",
+ "third_party/sigslot",
+ ]
+ if (is_android) {
+ deps += [ ":ifaddrs_android" ]
+ }
+ if (is_win) {
+ deps += [ ":win32" ]
+ }
+ if (is_mac || is_ios) {
+ deps += [ "system:cocoa_threading" ]
+ }
}
rtc_source_set("socket_factory") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "socket_factory.h",
- # ]
+ sources = [ "socket_factory.h" ]
+ deps = [
+ ":async_socket",
+ ":socket",
+ ]
}
-rtc_source_set("async_socket") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "async_socket.cc",
- # "async_socket.h",
- # ]
+rtc_library("async_socket") {
+ sources = [
+ "async_socket.cc",
+ "async_socket.h",
+ ]
+ deps = [
+ ":checks",
+ ":socket",
+ ":socket_address",
+ "third_party/sigslot",
+ ]
}
-rtc_source_set("socket") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "socket.cc",
- # "socket.h",
- # ]
+rtc_library("socket") {
+ sources = [
+ "socket.cc",
+ "socket.h",
+ ]
+ deps = [
+ ":macromagic",
+ ":socket_address",
+ ]
+ if (is_win) {
+ deps += [ ":win32" ]
+ }
}
rtc_source_set("network_constants") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "network_constants.h",
- # ]
+ sources = [
+ "network_constants.cc",
+ "network_constants.h",
+ ]
+ deps = [ ":checks" ]
}
if (is_android) {
- rtc_source_set("ifaddrs_android") {
- # TODO(bugs.webrtc.org/9987): This build target will soon contain
- # the following files:
- # sources = [
- # "ifaddrs_android.cc",
- # "ifaddrs_android.h",
- # ]
+ rtc_library("ifaddrs_android") {
+ sources = [
+ "ifaddrs_android.cc",
+ "ifaddrs_android.h",
+ ]
+ libs = [
+ "log",
+ "GLESv2",
+ ]
}
}
if (is_win) {
- rtc_source_set("win32") {
+ rtc_library("win32") {
sources = [
"win32.cc",
"win32.h",
@@ -829,10 +910,20 @@
libs = []
defines = []
deps = [
+ ":async_resolver_interface",
+ ":async_socket",
":checks",
":deprecation",
+ ":ip_address",
+ ":network_constants",
+ ":null_socket_server",
":rtc_task_queue",
+ ":socket",
+ ":socket_address",
+ ":socket_factory",
+ ":socket_server",
":stringutils",
+ ":threading",
"../api:array_view",
"../api:function_view",
"../api:scoped_refptr",
@@ -868,10 +959,6 @@
"async_invoker_inl.h",
"async_packet_socket.cc",
"async_packet_socket.h",
- "async_resolver_interface.cc",
- "async_resolver_interface.h",
- "async_socket.cc",
- "async_socket.h",
"async_tcp_socket.cc",
"async_tcp_socket.h",
"async_udp_socket.cc",
@@ -891,30 +978,16 @@
"helpers.h",
"http_common.cc",
"http_common.h",
- "ip_address.cc",
- "ip_address.h",
"keep_ref_until_done.h",
"mdns_responder_interface.h",
"message_digest.cc",
"message_digest.h",
- "message_handler.cc",
- "message_handler.h",
"net_helper.cc",
"net_helper.h",
- "net_helpers.cc",
- "net_helpers.h",
"network.cc",
"network.h",
- "network_constants.cc",
- "network_constants.h",
- "network_monitor.cc",
- "network_monitor.h",
- "network_monitor_factory.cc",
- "network_monitor_factory.h",
"network_route.cc",
"network_route.h",
- "null_socket_server.cc",
- "null_socket_server.h",
"openssl.h",
"openssl_adapter.cc",
"openssl_adapter.h",
@@ -928,8 +1001,6 @@
"openssl_stream_adapter.h",
"openssl_utility.cc",
"openssl_utility.h",
- "physical_socket_server.cc",
- "physical_socket_server.h",
"proxy_info.cc",
"proxy_info.h",
"rtc_certificate.cc",
@@ -938,16 +1009,10 @@
"rtc_certificate_generator.h",
"signal_thread.h",
"sigslot_repeater.h",
- "socket.cc",
- "socket.h",
"socket_adapters.cc",
"socket_adapters.h",
- "socket_address.cc",
- "socket_address.h",
"socket_address_pair.cc",
"socket_address_pair.h",
- "socket_factory.h",
- "socket_server.h",
"ssl_adapter.cc",
"ssl_adapter.h",
"ssl_certificate.cc",
@@ -960,9 +1025,6 @@
"ssl_stream_adapter.h",
"stream.cc",
"stream.h",
- "thread.cc",
- "thread.h",
- "thread_message.h",
"unique_id_generator.cc",
"unique_id_generator.h",
]
@@ -986,7 +1048,6 @@
if (build_with_chromium) {
include_dirs = [ "../../boringssl/src/include" ]
- public_configs += [ ":rtc_base_chromium_config" ]
} else {
sources += [
"callback.h",
@@ -1016,20 +1077,11 @@
}
if (is_android) {
- sources += [
- "ifaddrs_android.cc",
- "ifaddrs_android.h",
- ]
-
- libs += [
- "log",
- "GLESv2",
- ]
+ deps += [ ":ifaddrs_android" ]
}
if (is_ios || is_mac) {
sources += [ "mac_ifaddrs_converter.cc" ]
- deps += [ "system:cocoa_threading" ]
}
if (is_linux || is_chromeos) {
@@ -1084,6 +1136,7 @@
":rtc_base",
":rtc_base_tests_utils",
":stringutils",
+ ":threading",
"../test:test_support",
]
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
@@ -1100,6 +1153,7 @@
":gunit_helpers",
":rtc_base",
":rtc_base_tests_utils",
+ ":threading",
":timeutils",
"synchronization:mutex",
]
@@ -1158,8 +1212,15 @@
"virtual_socket_server.h",
]
deps = [
+ ":async_socket",
":checks",
+ ":ip_address",
":rtc_base",
+ ":socket",
+ ":socket_address",
+ ":socket_factory",
+ ":socket_server",
+ ":threading",
"../api/units:time_delta",
"../api/units:timestamp",
"memory:fifo_buffer",
@@ -1227,11 +1288,19 @@
"socket_unittest.h",
]
deps = [
+ ":async_socket",
":checks",
":gunit_helpers",
+ ":ip_address",
+ ":net_helpers",
+ ":null_socket_server",
":rtc_base",
":rtc_base_tests_utils",
+ ":socket",
+ ":socket_address",
+ ":socket_server",
":testclient",
+ ":threading",
"../system_wrappers",
"../test:fileutils",
"../test:test_main",
@@ -1295,10 +1364,13 @@
sources += [ "win/windows_version_unittest.cc" ]
}
deps = [
+ ":async_socket",
":bounded_inline_vector",
":checks",
":divide_round",
":gunit_helpers",
+ ":ip_address",
+ ":null_socket_server",
":rate_limiter",
":rtc_base",
":rtc_base_approved",
@@ -1308,8 +1380,12 @@
":safe_compare",
":safe_minmax",
":sanitizer",
+ ":socket",
+ ":socket_address",
+ ":socket_server",
":stringutils",
":testclient",
+ ":threading",
"../api:array_view",
"../api:scoped_refptr",
"../api/numerics",
@@ -1356,6 +1432,7 @@
":rtc_base_approved",
":rtc_event",
":rtc_operations_chain",
+ ":threading",
"../test:test_support",
]
}
@@ -1437,11 +1514,19 @@
"unique_id_generator_unittest.cc",
]
deps = [
+ ":async_socket",
":checks",
":gunit_helpers",
+ ":ip_address",
+ ":net_helpers",
+ ":null_socket_server",
":rtc_base_tests_utils",
+ ":socket_address",
+ ":socket_factory",
+ ":socket_server",
":stringutils",
":testclient",
+ ":threading",
"../api:array_view",
"../api/task_queue",
"../api/task_queue:task_queue_test",
diff --git a/rtc_base/async_resolver.cc b/rtc_base/async_resolver.cc
new file mode 100644
index 0000000..198b498
--- /dev/null
+++ b/rtc_base/async_resolver.cc
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2008 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.
+ */
+
+#include "rtc_base/async_resolver.h"
+
+#include <string>
+#include <utility>
+
+#if defined(WEBRTC_WIN)
+#include <ws2spi.h>
+#include <ws2tcpip.h>
+
+#include "rtc_base/win32.h"
+#endif
+#if defined(WEBRTC_POSIX) && !defined(__native_client__)
+#if defined(WEBRTC_ANDROID)
+#include "rtc_base/ifaddrs_android.h"
+#else
+#include <ifaddrs.h>
+#endif
+#endif // defined(WEBRTC_POSIX) && !defined(__native_client__)
+
+#include "api/task_queue/task_queue_base.h"
+#include "rtc_base/ip_address.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/task_queue.h"
+#include "rtc_base/task_utils/to_queued_task.h"
+#include "rtc_base/third_party/sigslot/sigslot.h" // for signal_with_thread...
+
+namespace rtc {
+
+int ResolveHostname(const std::string& hostname,
+ int family,
+ std::vector<IPAddress>* addresses) {
+#ifdef __native_client__
+ RTC_NOTREACHED();
+ RTC_LOG(LS_WARNING) << "ResolveHostname() is not implemented for NaCl";
+ return -1;
+#else // __native_client__
+ if (!addresses) {
+ return -1;
+ }
+ addresses->clear();
+ struct addrinfo* result = nullptr;
+ struct addrinfo hints = {0};
+ hints.ai_family = family;
+ // |family| here will almost always be AF_UNSPEC, because |family| comes from
+ // AsyncResolver::addr_.family(), which comes from a SocketAddress constructed
+ // with a hostname. When a SocketAddress is constructed with a hostname, its
+ // family is AF_UNSPEC. However, if someday in the future we construct
+ // a SocketAddress with both a hostname and a family other than AF_UNSPEC,
+ // then it would be possible to get a specific family value here.
+
+ // The behavior of AF_UNSPEC is roughly "get both ipv4 and ipv6", as
+ // documented by the various operating systems:
+ // Linux: http://man7.org/linux/man-pages/man3/getaddrinfo.3.html
+ // Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/
+ // ms738520(v=vs.85).aspx
+ // Mac: https://developer.apple.com/legacy/library/documentation/Darwin/
+ // Reference/ManPages/man3/getaddrinfo.3.html
+ // Android (source code, not documentation):
+ // https://android.googlesource.com/platform/bionic/+/
+ // 7e0bfb511e85834d7c6cb9631206b62f82701d60/libc/netbsd/net/getaddrinfo.c#1657
+ hints.ai_flags = AI_ADDRCONFIG;
+ int ret = getaddrinfo(hostname.c_str(), nullptr, &hints, &result);
+ if (ret != 0) {
+ return ret;
+ }
+ struct addrinfo* cursor = result;
+ for (; cursor; cursor = cursor->ai_next) {
+ if (family == AF_UNSPEC || cursor->ai_family == family) {
+ IPAddress ip;
+ if (IPFromAddrInfo(cursor, &ip)) {
+ addresses->push_back(ip);
+ }
+ }
+ }
+ freeaddrinfo(result);
+ return 0;
+#endif // !__native_client__
+}
+
+AsyncResolver::AsyncResolver() : error_(-1) {}
+
+AsyncResolver::~AsyncResolver() {
+ RTC_DCHECK_RUN_ON(&sequence_checker_);
+}
+
+void AsyncResolver::Start(const SocketAddress& addr) {
+ RTC_DCHECK_RUN_ON(&sequence_checker_);
+ RTC_DCHECK(!destroy_called_);
+ addr_ = addr;
+ webrtc::TaskQueueBase* current_task_queue = webrtc::TaskQueueBase::Current();
+ popup_thread_ = Thread::Create();
+ popup_thread_->Start();
+ popup_thread_->PostTask(webrtc::ToQueuedTask(
+ [this, flag = safety_.flag(), addr, current_task_queue] {
+ std::vector<IPAddress> addresses;
+ int error =
+ ResolveHostname(addr.hostname().c_str(), addr.family(), &addresses);
+ current_task_queue->PostTask(webrtc::ToQueuedTask(
+ std::move(flag), [this, error, addresses = std::move(addresses)] {
+ RTC_DCHECK_RUN_ON(&sequence_checker_);
+ ResolveDone(std::move(addresses), error);
+ }));
+ }));
+}
+
+bool AsyncResolver::GetResolvedAddress(int family, SocketAddress* addr) const {
+ RTC_DCHECK_RUN_ON(&sequence_checker_);
+ RTC_DCHECK(!destroy_called_);
+ if (error_ != 0 || addresses_.empty())
+ return false;
+
+ *addr = addr_;
+ for (size_t i = 0; i < addresses_.size(); ++i) {
+ if (family == addresses_[i].family()) {
+ addr->SetResolvedIP(addresses_[i]);
+ return true;
+ }
+ }
+ return false;
+}
+
+int AsyncResolver::GetError() const {
+ RTC_DCHECK_RUN_ON(&sequence_checker_);
+ RTC_DCHECK(!destroy_called_);
+ return error_;
+}
+
+void AsyncResolver::Destroy(bool wait) {
+ // Some callers have trouble guaranteeing that Destroy is called on the
+ // sequence guarded by |sequence_checker_|.
+ // RTC_DCHECK_RUN_ON(&sequence_checker_);
+ RTC_DCHECK(!destroy_called_);
+ destroy_called_ = true;
+ MaybeSelfDestruct();
+}
+
+const std::vector<IPAddress>& AsyncResolver::addresses() const {
+ RTC_DCHECK_RUN_ON(&sequence_checker_);
+ RTC_DCHECK(!destroy_called_);
+ return addresses_;
+}
+
+void AsyncResolver::ResolveDone(std::vector<IPAddress> addresses, int error) {
+ addresses_ = addresses;
+ error_ = error;
+ recursion_check_ = true;
+ SignalDone(this);
+ MaybeSelfDestruct();
+}
+
+void AsyncResolver::MaybeSelfDestruct() {
+ if (!recursion_check_) {
+ delete this;
+ } else {
+ recursion_check_ = false;
+ }
+}
+
+} // namespace rtc
diff --git a/rtc_base/async_resolver.h b/rtc_base/async_resolver.h
index 3c3ad82..c05377a 100644
--- a/rtc_base/async_resolver.h
+++ b/rtc_base/async_resolver.h
@@ -11,7 +11,62 @@
#ifndef RTC_BASE_ASYNC_RESOLVER_H_
#define RTC_BASE_ASYNC_RESOLVER_H_
-// Placeholder header for the refactoring in:
-// https://webrtc-review.googlesource.com/c/src/+/196903
+#if defined(WEBRTC_POSIX)
+#include <sys/socket.h>
+#elif WEBRTC_WIN
+#include <winsock2.h> // NOLINT
+#endif
+
+#include <memory>
+#include <vector>
+
+#include "rtc_base/async_resolver_interface.h"
+#include "rtc_base/ip_address.h"
+#include "rtc_base/socket_address.h"
+#include "rtc_base/synchronization/sequence_checker.h"
+#include "rtc_base/system/no_unique_address.h"
+#include "rtc_base/system/rtc_export.h"
+#include "rtc_base/task_utils/pending_task_safety_flag.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/thread_annotations.h"
+
+namespace rtc {
+
+// AsyncResolver will perform async DNS resolution, signaling the result on
+// the SignalDone from AsyncResolverInterface when the operation completes.
+//
+// This class is thread-compatible, and all methods and destruction needs to
+// happen from the same rtc::Thread, except for Destroy which is allowed to
+// happen on another context provided it's not happening concurrently to another
+// public API call, and is the last access to the object.
+class RTC_EXPORT AsyncResolver : public AsyncResolverInterface {
+ public:
+ AsyncResolver();
+ ~AsyncResolver() override;
+
+ void Start(const SocketAddress& addr) override;
+ bool GetResolvedAddress(int family, SocketAddress* addr) const override;
+ int GetError() const override;
+ void Destroy(bool wait) override;
+
+ const std::vector<IPAddress>& addresses() const;
+
+ private:
+ void ResolveDone(std::vector<IPAddress> addresses, int error)
+ RTC_EXCLUSIVE_LOCKS_REQUIRED(sequence_checker_);
+ void MaybeSelfDestruct();
+
+ SocketAddress addr_ RTC_GUARDED_BY(sequence_checker_);
+ std::vector<IPAddress> addresses_ RTC_GUARDED_BY(sequence_checker_);
+ int error_ RTC_GUARDED_BY(sequence_checker_);
+ webrtc::ScopedTaskSafety safety_ RTC_GUARDED_BY(sequence_checker_);
+ std::unique_ptr<Thread> popup_thread_ RTC_GUARDED_BY(sequence_checker_);
+ bool recursion_check_ =
+ false; // Protects against SignalDone calling into Destroy.
+ bool destroy_called_ = false;
+ RTC_NO_UNIQUE_ADDRESS webrtc::SequenceChecker sequence_checker_;
+};
+
+} // namespace rtc
#endif // RTC_BASE_ASYNC_RESOLVER_H_
diff --git a/rtc_base/internal/default_socket_server.cc b/rtc_base/internal/default_socket_server.cc
new file mode 100644
index 0000000..5632b98
--- /dev/null
+++ b/rtc_base/internal/default_socket_server.cc
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020 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.
+ */
+
+#include "rtc_base/internal/default_socket_server.h"
+
+#include <memory>
+
+#include "rtc_base/socket_server.h"
+
+#if defined(__native_client__)
+#include "rtc_base/null_socket_server.h"
+#else
+#include "rtc_base/physical_socket_server.h"
+#endif
+
+namespace rtc {
+
+std::unique_ptr<SocketServer> CreateDefaultSocketServer() {
+#if defined(__native_client__)
+ return std::unique_ptr<SocketServer>(new rtc::NullSocketServer);
+#else
+ return std::unique_ptr<SocketServer>(new rtc::PhysicalSocketServer);
+#endif
+}
+
+} // namespace rtc
diff --git a/rtc_base/internal/default_socket_server.h b/rtc_base/internal/default_socket_server.h
new file mode 100644
index 0000000..5b3489f
--- /dev/null
+++ b/rtc_base/internal/default_socket_server.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 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.
+ */
+
+#ifndef RTC_BASE_INTERNAL_DEFAULT_SOCKET_SERVER_H_
+#define RTC_BASE_INTERNAL_DEFAULT_SOCKET_SERVER_H_
+
+#include <memory>
+
+#include "rtc_base/socket_server.h"
+
+namespace rtc {
+
+std::unique_ptr<SocketServer> CreateDefaultSocketServer();
+
+} // namespace rtc
+
+#endif // RTC_BASE_INTERNAL_DEFAULT_SOCKET_SERVER_H_
diff --git a/rtc_base/ip_address.cc b/rtc_base/ip_address.cc
index 9dd534c..9f1df58 100644
--- a/rtc_base/ip_address.cc
+++ b/rtc_base/ip_address.cc
@@ -20,8 +20,9 @@
#include <netdb.h>
#endif
-#include "rtc_base/byte_order.h"
#include "rtc_base/ip_address.h"
+
+#include "rtc_base/byte_order.h"
#include "rtc_base/net_helpers.h"
#include "rtc_base/string_utils.h"
diff --git a/rtc_base/memory/BUILD.gn b/rtc_base/memory/BUILD.gn
index 838fbc6..8fbb549 100644
--- a/rtc_base/memory/BUILD.gn
+++ b/rtc_base/memory/BUILD.gn
@@ -36,6 +36,7 @@
]
deps = [
"..:rtc_base",
+ "..:threading",
"../synchronization:mutex",
"../task_utils:pending_task_safety_flag",
"../task_utils:to_queued_task",
diff --git a/rtc_base/net_helpers.cc b/rtc_base/net_helpers.cc
index c6685e2..e51a51a 100644
--- a/rtc_base/net_helpers.cc
+++ b/rtc_base/net_helpers.cc
@@ -10,6 +10,8 @@
#include "rtc_base/net_helpers.h"
+#include <memory>
+
#if defined(WEBRTC_WIN)
#include <ws2spi.h>
#include <ws2tcpip.h>
@@ -17,6 +19,7 @@
#include "rtc_base/win32.h"
#endif
#if defined(WEBRTC_POSIX) && !defined(__native_client__)
+#include <arpa/inet.h>
#if defined(WEBRTC_ANDROID)
#include "rtc_base/ifaddrs_android.h"
#else
@@ -24,145 +27,8 @@
#endif
#endif // defined(WEBRTC_POSIX) && !defined(__native_client__)
-#include "api/task_queue/task_queue_base.h"
-#include "rtc_base/logging.h"
-#include "rtc_base/signal_thread.h"
-#include "rtc_base/task_queue.h"
-#include "rtc_base/task_utils/to_queued_task.h"
-#include "rtc_base/third_party/sigslot/sigslot.h" // for signal_with_thread...
-
namespace rtc {
-int ResolveHostname(const std::string& hostname,
- int family,
- std::vector<IPAddress>* addresses) {
-#ifdef __native_client__
- RTC_NOTREACHED();
- RTC_LOG(LS_WARNING) << "ResolveHostname() is not implemented for NaCl";
- return -1;
-#else // __native_client__
- if (!addresses) {
- return -1;
- }
- addresses->clear();
- struct addrinfo* result = nullptr;
- struct addrinfo hints = {0};
- hints.ai_family = family;
- // |family| here will almost always be AF_UNSPEC, because |family| comes from
- // AsyncResolver::addr_.family(), which comes from a SocketAddress constructed
- // with a hostname. When a SocketAddress is constructed with a hostname, its
- // family is AF_UNSPEC. However, if someday in the future we construct
- // a SocketAddress with both a hostname and a family other than AF_UNSPEC,
- // then it would be possible to get a specific family value here.
-
- // The behavior of AF_UNSPEC is roughly "get both ipv4 and ipv6", as
- // documented by the various operating systems:
- // Linux: http://man7.org/linux/man-pages/man3/getaddrinfo.3.html
- // Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/
- // ms738520(v=vs.85).aspx
- // Mac: https://developer.apple.com/legacy/library/documentation/Darwin/
- // Reference/ManPages/man3/getaddrinfo.3.html
- // Android (source code, not documentation):
- // https://android.googlesource.com/platform/bionic/+/
- // 7e0bfb511e85834d7c6cb9631206b62f82701d60/libc/netbsd/net/getaddrinfo.c#1657
- hints.ai_flags = AI_ADDRCONFIG;
- int ret = getaddrinfo(hostname.c_str(), nullptr, &hints, &result);
- if (ret != 0) {
- return ret;
- }
- struct addrinfo* cursor = result;
- for (; cursor; cursor = cursor->ai_next) {
- if (family == AF_UNSPEC || cursor->ai_family == family) {
- IPAddress ip;
- if (IPFromAddrInfo(cursor, &ip)) {
- addresses->push_back(ip);
- }
- }
- }
- freeaddrinfo(result);
- return 0;
-#endif // !__native_client__
-}
-
-AsyncResolver::AsyncResolver() : error_(-1) {}
-
-AsyncResolver::~AsyncResolver() {
- RTC_DCHECK_RUN_ON(&sequence_checker_);
-}
-
-void AsyncResolver::Start(const SocketAddress& addr) {
- RTC_DCHECK_RUN_ON(&sequence_checker_);
- RTC_DCHECK(!destroy_called_);
- addr_ = addr;
- webrtc::TaskQueueBase* current_task_queue = webrtc::TaskQueueBase::Current();
- popup_thread_ = Thread::Create();
- popup_thread_->Start();
- popup_thread_->PostTask(webrtc::ToQueuedTask(
- [this, flag = safety_.flag(), addr, current_task_queue] {
- std::vector<IPAddress> addresses;
- int error =
- ResolveHostname(addr.hostname().c_str(), addr.family(), &addresses);
- current_task_queue->PostTask(webrtc::ToQueuedTask(
- std::move(flag), [this, error, addresses = std::move(addresses)] {
- RTC_DCHECK_RUN_ON(&sequence_checker_);
- ResolveDone(std::move(addresses), error);
- }));
- }));
-}
-
-bool AsyncResolver::GetResolvedAddress(int family, SocketAddress* addr) const {
- RTC_DCHECK_RUN_ON(&sequence_checker_);
- RTC_DCHECK(!destroy_called_);
- if (error_ != 0 || addresses_.empty())
- return false;
-
- *addr = addr_;
- for (size_t i = 0; i < addresses_.size(); ++i) {
- if (family == addresses_[i].family()) {
- addr->SetResolvedIP(addresses_[i]);
- return true;
- }
- }
- return false;
-}
-
-int AsyncResolver::GetError() const {
- RTC_DCHECK_RUN_ON(&sequence_checker_);
- RTC_DCHECK(!destroy_called_);
- return error_;
-}
-
-void AsyncResolver::Destroy(bool wait) {
- // Some callers have trouble guaranteeing that Destroy is called on the
- // sequence guarded by |sequence_checker_|.
- // RTC_DCHECK_RUN_ON(&sequence_checker_);
- RTC_DCHECK(!destroy_called_);
- destroy_called_ = true;
- MaybeSelfDestruct();
-}
-
-const std::vector<IPAddress>& AsyncResolver::addresses() const {
- RTC_DCHECK_RUN_ON(&sequence_checker_);
- RTC_DCHECK(!destroy_called_);
- return addresses_;
-}
-
-void AsyncResolver::ResolveDone(std::vector<IPAddress> addresses, int error) {
- addresses_ = addresses;
- error_ = error;
- recursion_check_ = true;
- SignalDone(this);
- MaybeSelfDestruct();
-}
-
-void AsyncResolver::MaybeSelfDestruct() {
- if (!recursion_check_) {
- delete this;
- } else {
- recursion_check_ = false;
- }
-}
-
const char* inet_ntop(int af, const void* src, char* dst, socklen_t size) {
#if defined(WEBRTC_WIN)
return win32_inet_ntop(af, src, dst, size);
diff --git a/rtc_base/net_helpers.h b/rtc_base/net_helpers.h
index 172a222..4ed8478 100644
--- a/rtc_base/net_helpers.h
+++ b/rtc_base/net_helpers.h
@@ -15,57 +15,12 @@
#include <sys/socket.h>
#elif WEBRTC_WIN
#include <winsock2.h> // NOLINT
+
+#include "rtc_base/win32.h"
#endif
-#include <vector>
-
-#include "rtc_base/async_resolver_interface.h"
-#include "rtc_base/ip_address.h"
-#include "rtc_base/socket_address.h"
-#include "rtc_base/synchronization/sequence_checker.h"
-#include "rtc_base/system/no_unique_address.h"
-#include "rtc_base/system/rtc_export.h"
-#include "rtc_base/task_utils/pending_task_safety_flag.h"
-#include "rtc_base/thread.h"
-#include "rtc_base/thread_annotations.h"
-
namespace rtc {
-// AsyncResolver will perform async DNS resolution, signaling the result on
-// the SignalDone from AsyncResolverInterface when the operation completes.
-//
-// This class is thread-compatible, and all methods and destruction needs to
-// happen from the same rtc::Thread, except for Destroy which is allowed to
-// happen on another context provided it's not happening concurrently to another
-// public API call, and is the last access to the object.
-class RTC_EXPORT AsyncResolver : public AsyncResolverInterface {
- public:
- AsyncResolver();
- ~AsyncResolver() override;
-
- void Start(const SocketAddress& addr) override;
- bool GetResolvedAddress(int family, SocketAddress* addr) const override;
- int GetError() const override;
- void Destroy(bool wait) override;
-
- const std::vector<IPAddress>& addresses() const;
-
- private:
- void ResolveDone(std::vector<IPAddress> addresses, int error)
- RTC_EXCLUSIVE_LOCKS_REQUIRED(sequence_checker_);
- void MaybeSelfDestruct();
-
- SocketAddress addr_ RTC_GUARDED_BY(sequence_checker_);
- std::vector<IPAddress> addresses_ RTC_GUARDED_BY(sequence_checker_);
- int error_ RTC_GUARDED_BY(sequence_checker_);
- webrtc::ScopedTaskSafety safety_ RTC_GUARDED_BY(sequence_checker_);
- std::unique_ptr<Thread> popup_thread_ RTC_GUARDED_BY(sequence_checker_);
- bool recursion_check_ =
- false; // Protects against SignalDone calling into Destroy.
- bool destroy_called_ = false;
- RTC_NO_UNIQUE_ADDRESS webrtc::SequenceChecker sequence_checker_;
-};
-
// rtc namespaced wrappers for inet_ntop and inet_pton so we can avoid
// the windows-native versions of these.
const char* inet_ntop(int af, const void* src, char* dst, socklen_t size);
@@ -73,6 +28,7 @@
bool HasIPv4Enabled();
bool HasIPv6Enabled();
+
} // namespace rtc
#endif // RTC_BASE_NET_HELPERS_H_
diff --git a/rtc_base/physical_socket_server.cc b/rtc_base/physical_socket_server.cc
index 3cb7c20..adf3fab 100644
--- a/rtc_base/physical_socket_server.cc
+++ b/rtc_base/physical_socket_server.cc
@@ -119,14 +119,6 @@
namespace rtc {
-std::unique_ptr<SocketServer> SocketServer::CreateDefault() {
-#if defined(__native_client__)
- return std::unique_ptr<SocketServer>(new rtc::NullSocketServer);
-#else
- return std::unique_ptr<SocketServer>(new rtc::PhysicalSocketServer);
-#endif
-}
-
PhysicalSocket::PhysicalSocket(PhysicalSocketServer* ss, SOCKET s)
: ss_(ss),
s_(s),
diff --git a/rtc_base/physical_socket_server.h b/rtc_base/physical_socket_server.h
index cc21a67..5a09aac 100644
--- a/rtc_base/physical_socket_server.h
+++ b/rtc_base/physical_socket_server.h
@@ -21,8 +21,9 @@
#include <unordered_map>
#include <vector>
+#include "rtc_base/async_resolver.h"
+#include "rtc_base/async_resolver_interface.h"
#include "rtc_base/deprecated/recursive_critical_section.h"
-#include "rtc_base/net_helpers.h"
#include "rtc_base/socket_server.h"
#include "rtc_base/system/rtc_export.h"
#include "rtc_base/thread_annotations.h"
diff --git a/rtc_base/physical_socket_server_unittest.cc b/rtc_base/physical_socket_server_unittest.cc
index 648f397..3762762 100644
--- a/rtc_base/physical_socket_server_unittest.cc
+++ b/rtc_base/physical_socket_server_unittest.cc
@@ -18,6 +18,7 @@
#include "rtc_base/gunit.h"
#include "rtc_base/ip_address.h"
#include "rtc_base/logging.h"
+#include "rtc_base/net_helpers.h"
#include "rtc_base/network_monitor.h"
#include "rtc_base/socket_unittest.h"
#include "rtc_base/test_utils.h"
diff --git a/rtc_base/synchronization/BUILD.gn b/rtc_base/synchronization/BUILD.gn
index 618e224..16922af 100644
--- a/rtc_base/synchronization/BUILD.gn
+++ b/rtc_base/synchronization/BUILD.gn
@@ -88,6 +88,7 @@
"..:macromagic",
"..:rtc_base",
"..:rtc_event",
+ "..:threading",
"../../test:test_support",
"//third_party/google_benchmark",
]
diff --git a/rtc_base/thread.cc b/rtc_base/thread.cc
index 3244902..1045398 100644
--- a/rtc_base/thread.cc
+++ b/rtc_base/thread.cc
@@ -33,6 +33,7 @@
#include "rtc_base/checks.h"
#include "rtc_base/deprecated/recursive_critical_section.h"
#include "rtc_base/event.h"
+#include "rtc_base/internal/default_socket_server.h"
#include "rtc_base/logging.h"
#include "rtc_base/null_socket_server.h"
#include "rtc_base/synchronization/sequence_checker.h"
@@ -257,7 +258,7 @@
#ifndef NO_MAIN_THREAD_WRAPPING
// Only autowrap the thread which instantiated the ThreadManager.
if (!thread && manager->IsMainThread()) {
- thread = new Thread(SocketServer::CreateDefault());
+ thread = new Thread(CreateDefaultSocketServer());
thread->WrapCurrentWithThreadManager(manager, true);
}
#endif
@@ -326,7 +327,7 @@
Thread* ThreadManager::WrapCurrentThread() {
Thread* result = CurrentThread();
if (nullptr == result) {
- result = new Thread(SocketServer::CreateDefault());
+ result = new Thread(CreateDefaultSocketServer());
result->WrapCurrentWithThreadManager(this, true);
}
return result;
@@ -696,7 +697,7 @@
}
std::unique_ptr<Thread> Thread::CreateWithSocketServer() {
- return std::unique_ptr<Thread>(new Thread(SocketServer::CreateDefault()));
+ return std::unique_ptr<Thread>(new Thread(CreateDefaultSocketServer()));
}
std::unique_ptr<Thread> Thread::Create() {
@@ -1137,7 +1138,7 @@
}
AutoThread::AutoThread()
- : Thread(SocketServer::CreateDefault(), /*do_init=*/false) {
+ : Thread(CreateDefaultSocketServer(), /*do_init=*/false) {
if (!ThreadManager::Instance()->CurrentThread()) {
// DoInit registers with ThreadManager. Do that only if we intend to
// be rtc::Thread::Current(), otherwise ProcessAllMessageQueuesInternal will
diff --git a/rtc_base/thread_unittest.cc b/rtc_base/thread_unittest.cc
index 5132198..705e268 100644
--- a/rtc_base/thread_unittest.cc
+++ b/rtc_base/thread_unittest.cc
@@ -19,6 +19,7 @@
#include "rtc_base/atomic_ops.h"
#include "rtc_base/event.h"
#include "rtc_base/gunit.h"
+#include "rtc_base/internal/default_socket_server.h"
#include "rtc_base/null_socket_server.h"
#include "rtc_base/physical_socket_server.h"
#include "rtc_base/socket_address.h"
@@ -505,7 +506,7 @@
class ThreadQueueTest : public ::testing::Test, public Thread {
public:
- ThreadQueueTest() : Thread(SocketServer::CreateDefault(), true) {}
+ ThreadQueueTest() : Thread(CreateDefaultSocketServer(), true) {}
bool IsLocked_Worker() {
if (!CritForTest()->TryEnter()) {
return true;
@@ -555,7 +556,7 @@
}
TEST_F(ThreadQueueTest, DelayedPostsWithIdenticalTimesAreProcessedInFifoOrder) {
- Thread q(SocketServer::CreateDefault(), true);
+ Thread q(CreateDefaultSocketServer(), true);
DelayedPostsWithIdenticalTimesAreProcessedInFifoOrder(&q);
NullSocketServer nullss;
diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn
index 9ba498c..1f0892b 100644
--- a/rtc_tools/BUILD.gn
+++ b/rtc_tools/BUILD.gn
@@ -181,6 +181,7 @@
"../rtc_base",
"../rtc_base:rtc_base_approved",
"../rtc_base:rtc_json",
+ "../rtc_base:threading",
"../rtc_base/system:file_wrapper",
"../test:fileutils",
"../test:rtp_test_utils",
@@ -489,6 +490,8 @@
"../common_video",
"../rtc_base",
"../rtc_base:checks",
+ "../rtc_base:null_socket_server",
+ "../rtc_base:threading",
"../test:fileutils",
"../test:test_main",
"../test:test_support",
diff --git a/rtc_tools/network_tester/BUILD.gn b/rtc_tools/network_tester/BUILD.gn
index b270262..95b5c90 100644
--- a/rtc_tools/network_tester/BUILD.gn
+++ b/rtc_tools/network_tester/BUILD.gn
@@ -45,9 +45,12 @@
"../../rtc_base",
"../../rtc_base:checks",
"../../rtc_base:ignore_wundef",
+ "../../rtc_base:ip_address",
"../../rtc_base:protobuf_utils",
"../../rtc_base:rtc_base_approved",
"../../rtc_base:rtc_task_queue",
+ "../../rtc_base:socket_address",
+ "../../rtc_base:threading",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/synchronization:sequence_checker",
"../../rtc_base/system:no_unique_address",
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 00c87ef..e557ce4 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -236,7 +236,10 @@
sources = [ "objc/native/src/audio/audio_session_observer.h" ]
- deps = [ "../rtc_base" ]
+ deps = [
+ "../rtc_base",
+ "../rtc_base:threading",
+ ]
}
rtc_library("audio_device") {
@@ -265,6 +268,7 @@
"../modules/audio_device:audio_device_generic",
"../rtc_base",
"../rtc_base:checks",
+ "../rtc_base:threading",
"../system_wrappers:field_trial",
"../system_wrappers:metrics",
]
@@ -338,7 +342,11 @@
sources = [ "objc/native/src/network_monitor_observer.h" ]
- deps = [ "../rtc_base" ]
+ deps = [
+ "../rtc_base",
+ "../rtc_base:network_constants",
+ "../rtc_base:threading",
+ ]
}
rtc_library("network_monitor_objc") {
@@ -383,6 +391,7 @@
"../media:rtc_media_base",
"../rtc_base",
"../rtc_base:checks",
+ "../rtc_base:threading",
"//third_party/libyuv",
]
@@ -973,6 +982,7 @@
"../pc:peerconnection",
"../rtc_base",
"../rtc_base:checks",
+ "../rtc_base:network_constants",
"../system_wrappers:field_trial",
"../system_wrappers:metrics",
]
@@ -1077,6 +1087,7 @@
":sdk_unittests_bundle_data",
":sdk_unittests_sources",
"../rtc_base",
+ "../rtc_base:threading",
"//test:test_support",
]
ldflags = [ "-all_load" ]
@@ -1096,6 +1107,7 @@
":framework_objc+link",
":ios_framework_bundle",
"../rtc_base",
+ "../rtc_base:threading",
"//test:test_support",
]
}
@@ -1500,6 +1512,7 @@
"../api/video_codecs:video_codecs_api",
"../common_video",
"../rtc_base",
+ "../rtc_base:threading",
]
if (is_ios) {
deps += [ ":native_network_monitor" ]
@@ -1520,6 +1533,7 @@
":network_monitor_objc",
":network_monitor_observer",
"../rtc_base",
+ "../rtc_base:threading",
"../rtc_base/synchronization:sequence_checker",
]
}
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index ce5db77..b7992e1 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -559,7 +559,9 @@
"../../api:scoped_refptr",
"../../rtc_base",
"../../rtc_base:checks",
+ "../../rtc_base:ip_address",
"../../rtc_base:rtc_base_approved",
+ "../../rtc_base:threading",
"../../rtc_base/synchronization:sequence_checker",
"../../system_wrappers:field_trial",
"../../system_wrappers:metrics",
@@ -656,6 +658,7 @@
"../../rtc_base",
"../../rtc_base:checks",
"../../rtc_base:rtc_task_queue",
+ "../../rtc_base:threading",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/task_utils:to_queued_task",
"//third_party/libyuv",
@@ -746,6 +749,7 @@
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
"../../rtc_base:rtc_task_queue",
+ "../../rtc_base:threading",
"../../rtc_base/system:thread_registry",
"../../system_wrappers:field_trial",
]
@@ -916,6 +920,7 @@
deps = [
":base_jni",
+ "../../rtc_base:threading",
"//rtc_base",
]
}
@@ -930,6 +935,7 @@
deps = [
":base_jni",
":peerconnection_jni",
+ "../../rtc_base:threading",
"//api:libjingle_peerconnection_api",
"//api/video_codecs:video_codecs_api",
"//rtc_base",
@@ -968,6 +974,7 @@
":native_api_jni",
":video_jni",
":videoframe_jni",
+ "../../rtc_base:threading",
"//api:libjingle_peerconnection_api",
"//api:media_stream_interface",
"//api/video:video_frame",
@@ -1471,6 +1478,7 @@
"../../modules/utility",
"../../pc:libjingle_peerconnection",
"../../rtc_base:checks",
+ "../../rtc_base:ip_address",
"../../rtc_base:rtc_base",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/system:inline",
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 0e1209f..a337979 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -145,6 +145,7 @@
"../api:scoped_refptr",
"../modules/video_capture:video_capture_module",
"../rtc_base",
+ "../rtc_base:threading",
"../sdk:base_objc",
"../sdk:native_api",
"../sdk:native_video",
@@ -415,6 +416,7 @@
"../rtc_base:checks",
"../rtc_base:logging",
"../rtc_base:rtc_base_approved",
+ "../rtc_base:threading",
"../system_wrappers:field_trial",
"../system_wrappers:metrics",
]
@@ -865,6 +867,7 @@
"../rtc_base:rtc_base",
"../rtc_base:rtc_event",
"../rtc_base:task_queue_for_test",
+ "../rtc_base:threading",
"../rtc_base/task_utils:to_queued_task",
"../system_wrappers",
"../system_wrappers:field_trial",
diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn
index 4975f42..af7a4b7 100644
--- a/test/fuzzers/BUILD.gn
+++ b/test/fuzzers/BUILD.gn
@@ -439,6 +439,7 @@
deps = [
"../../p2p:rtc_p2p",
"../../rtc_base",
+ "../../rtc_base:threading",
]
}
diff --git a/test/network/BUILD.gn b/test/network/BUILD.gn
index e250ccb..ceae0c9 100644
--- a/test/network/BUILD.gn
+++ b/test/network/BUILD.gn
@@ -52,10 +52,16 @@
"../../call:simulated_network",
"../../p2p:p2p_server_utils",
"../../rtc_base",
+ "../../rtc_base:async_socket",
+ "../../rtc_base:ip_address",
+ "../../rtc_base:network_constants",
"../../rtc_base:rtc_base_tests_utils",
"../../rtc_base:rtc_task_queue",
"../../rtc_base:safe_minmax",
+ "../../rtc_base:socket_address",
+ "../../rtc_base:socket_server",
"../../rtc_base:task_queue_for_test",
+ "../../rtc_base:threading",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/synchronization:sequence_checker",
"../../rtc_base/task_utils:repeating_task",
@@ -127,6 +133,7 @@
"../../call:simulated_network",
"../../rtc_base",
"../../rtc_base:logging",
+ "../../rtc_base:network_constants",
"../../rtc_base:rtc_event",
"../time_controller",
]
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index 3901297..8af76c3 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -61,6 +61,7 @@
"../../../api/transport:webrtc_key_value_config",
"../../../api/video_codecs:video_codecs_api",
"../../../rtc_base",
+ "../../../rtc_base:threading",
]
}
@@ -328,6 +329,7 @@
"../../../api/transport:network_control",
"../../../api/video_codecs:video_codecs_api",
"../../../rtc_base",
+ "../../../rtc_base:threading",
]
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
}
@@ -404,6 +406,7 @@
"../../../rtc_base:rtc_base_approved",
"../../../rtc_base:safe_conversions",
"../../../rtc_base:task_queue_for_test",
+ "../../../rtc_base:threading",
"../../../rtc_base/synchronization:mutex",
"../../../system_wrappers",
"../../../system_wrappers:field_trial",
@@ -697,6 +700,7 @@
"../../../api/units:data_size",
"../../../api/units:timestamp",
"../../../rtc_base",
+ "../../../rtc_base:ip_address",
"../../../rtc_base:rtc_event",
"../../../rtc_base:stringutils",
"../../../rtc_base/synchronization:mutex",
diff --git a/test/peer_scenario/BUILD.gn b/test/peer_scenario/BUILD.gn
index 70a7471..2034c9a 100644
--- a/test/peer_scenario/BUILD.gn
+++ b/test/peer_scenario/BUILD.gn
@@ -48,6 +48,7 @@
"../../pc:pc_test_utils",
"../../pc:rtc_pc_base",
"../../rtc_base",
+ "../../rtc_base:null_socket_server",
"../../rtc_base:stringutils",
"../logging:log_writer",
"../network:emulated_network",
diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn
index ede93c6..a6e3ed9 100644
--- a/test/scenario/BUILD.gn
+++ b/test/scenario/BUILD.gn
@@ -132,7 +132,9 @@
"../../rtc_base:rtc_stats_counters",
"../../rtc_base:rtc_task_queue",
"../../rtc_base:safe_minmax",
+ "../../rtc_base:socket_address",
"../../rtc_base:task_queue_for_test",
+ "../../rtc_base:threading",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/synchronization:sequence_checker",
"../../rtc_base/task_utils:repeating_task",
diff --git a/test/time_controller/BUILD.gn b/test/time_controller/BUILD.gn
index c9fffe6..ee49445 100644
--- a/test/time_controller/BUILD.gn
+++ b/test/time_controller/BUILD.gn
@@ -35,6 +35,7 @@
"../../modules/utility:utility",
"../../rtc_base",
"../../rtc_base:checks",
+ "../../rtc_base:null_socket_server",
"../../rtc_base:rtc_base_tests_utils",
"../../rtc_base:rtc_event",
"../../rtc_base/synchronization:mutex",
@@ -62,6 +63,7 @@
"../../rtc_base",
"../../rtc_base:rtc_base_approved",
"../../rtc_base:rtc_task_queue",
+ "../../rtc_base:threading",
"../../rtc_base/synchronization:mutex",
"../../rtc_base/task_utils:repeating_task",
"../../rtc_base/task_utils:to_queued_task",
diff --git a/video/BUILD.gn b/video/BUILD.gn
index f3e5817..acd1616 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -120,6 +120,7 @@
"../rtc_base:rtc_numerics",
"../rtc_base:rtc_task_queue",
"../rtc_base:stringutils",
+ "../rtc_base:threading",
"../rtc_base:weak_ptr",
"../rtc_base/experiments:alr_experiment",
"../rtc_base/experiments:field_trial_parser",
@@ -668,6 +669,7 @@
"../rtc_base:rtc_numerics",
"../rtc_base:rtc_task_queue",
"../rtc_base:task_queue_for_test",
+ "../rtc_base:threading",
"../rtc_base/experiments:alr_experiment",
"../rtc_base/synchronization:mutex",
"../rtc_base/synchronization:sequence_checker",