From 08438fcd9afb2a535e910f8f4382d3debe87b0a1 Mon Sep 17 00:00:00 2001 From: Byoungchan Lee Date: Tue, 12 Oct 2021 22:53:35 +0900 Subject: [PATCH] Remove a function for posting tasks to the global queue on MacOS/iOS and make it private. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since `PostTaskToGlobalQueue` is somewhat different from other TaskQueue APIs, there are concerns that it should not be a public API. Remove this from task_queue_gcd.h and make it a private static function of AsyncResolver. Bug: webrtc:13237 Change-Id: Ib4aff296f894a4f3b051969d176369e13a10088f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/234900 Reviewed-by: Tommi Reviewed-by: Kári Helgason Commit-Queue: Byoungchan Lee Cr-Commit-Position: refs/heads/main@{#35236} --- rtc_base/BUILD.gn | 10 ++-------- rtc_base/async_resolver.cc | 25 ++++++++++++++++++++++--- rtc_base/task_queue_gcd.cc | 14 -------------- rtc_base/task_queue_gcd.h | 5 ----- 4 files changed, 24 insertions(+), 30 deletions(-) diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index d9fe93e2e9..8fb8193520 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -542,10 +542,7 @@ if (rtc_enable_libevent) { if (is_mac || is_ios) { rtc_library("rtc_task_queue_gcd") { - visibility = [ - ":threading", - "../api/task_queue:default_task_queue_factory", - ] + visibility = [ "../api/task_queue:default_task_queue_factory" ] sources = [ "task_queue_gcd.cc", "task_queue_gcd.h", @@ -835,10 +832,7 @@ rtc_library("threading") { deps += [ ":win32" ] } if (is_mac || is_ios) { - deps += [ - ":rtc_task_queue_gcd", - "system:cocoa_threading", - ] + deps += [ "system:cocoa_threading" ] } } diff --git a/rtc_base/async_resolver.cc b/rtc_base/async_resolver.cc index 231e4fad98..0fd10977e2 100644 --- a/rtc_base/async_resolver.cc +++ b/rtc_base/async_resolver.cc @@ -41,11 +41,31 @@ #include "rtc_base/third_party/sigslot/sigslot.h" // for signal_with_thread... #if defined(WEBRTC_MAC) || defined(WEBRTC_IOS) -#include "rtc_base/task_queue_gcd.h" +#include #endif namespace rtc { +#if defined(WEBRTC_MAC) || defined(WEBRTC_IOS) +namespace { + +void GlobalGcdRunTask(void* context) { + std::unique_ptr task( + static_cast(context)); + task->Run(); +} + +// Post a task into the system-defined global concurrent queue. +void PostTaskToGlobalQueue(std::unique_ptr task) { + dispatch_queue_global_t global_queue = + dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); + webrtc::QueuedTask* context = task.release(); + dispatch_async_f(global_queue, context, &GlobalGcdRunTask); +} + +} // namespace +#endif + int ResolveHostname(const std::string& hostname, int family, std::vector* addresses) { @@ -152,8 +172,7 @@ void AsyncResolver::Start(const SocketAddress& addr) { } }; #if defined(WEBRTC_MAC) || defined(WEBRTC_IOS) - webrtc::PostTaskToGlobalQueue( - webrtc::ToQueuedTask(std::move(thread_function))); + PostTaskToGlobalQueue(webrtc::ToQueuedTask(std::move(thread_function))); #else PlatformThread::SpawnDetached(std::move(thread_function), "AsyncResolver"); #endif diff --git a/rtc_base/task_queue_gcd.cc b/rtc_base/task_queue_gcd.cc index aefc207431..2276f635c5 100644 --- a/rtc_base/task_queue_gcd.cc +++ b/rtc_base/task_queue_gcd.cc @@ -145,24 +145,10 @@ class TaskQueueGcdFactory final : public TaskQueueFactory { } }; -// static -void GlobalGcdRunTask(void* context) { - std::unique_ptr task(static_cast(context)); - task->Run(); -} - } // namespace std::unique_ptr CreateTaskQueueGcdFactory() { return std::make_unique(); } -void PostTaskToGlobalQueue(std::unique_ptr task, - TaskQueueFactory::Priority priority) { - dispatch_queue_global_t global_queue = - dispatch_get_global_queue(TaskQueuePriorityToGCD(priority), 0); - QueuedTask* context = task.release(); - dispatch_async_f(global_queue, context, &GlobalGcdRunTask); -} - } // namespace webrtc diff --git a/rtc_base/task_queue_gcd.h b/rtc_base/task_queue_gcd.h index 898c2a3458..dc6039e99a 100644 --- a/rtc_base/task_queue_gcd.h +++ b/rtc_base/task_queue_gcd.h @@ -19,11 +19,6 @@ namespace webrtc { std::unique_ptr CreateTaskQueueGcdFactory(); -// Post a task into the system-defined global concurrent queue. -void PostTaskToGlobalQueue( - std::unique_ptr task, - TaskQueueFactory::Priority priority = TaskQueueFactory::Priority::NORMAL); - } // namespace webrtc #endif // RTC_BASE_TASK_QUEUE_GCD_H_