Delete AsyncInvoker usage from StunProber Bug: webrtc:12339 Change-Id: I643a06a26d5aa38e135c252d5b71aee3d073ea3b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212504 Reviewed-by: Taylor <deadbeef@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33518}
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn index 7ccad67..8cdb663 100644 --- a/p2p/BUILD.gn +++ b/p2p/BUILD.gn
@@ -310,6 +310,8 @@ "../rtc_base:socket_address", "../rtc_base:threading", "../rtc_base/system:rtc_export", + "../rtc_base/task_utils:pending_task_safety_flag", + "../rtc_base/task_utils:to_queued_task", ] }
diff --git a/p2p/stunprober/stun_prober.cc b/p2p/stunprober/stun_prober.cc index 513097d..d85d5f2 100644 --- a/p2p/stunprober/stun_prober.cc +++ b/p2p/stunprober/stun_prober.cc
@@ -24,6 +24,7 @@ #include "rtc_base/constructor_magic.h" #include "rtc_base/helpers.h" #include "rtc_base/logging.h" +#include "rtc_base/task_utils/to_queued_task.h" #include "rtc_base/thread.h" #include "rtc_base/time_utils.h" @@ -261,6 +262,7 @@ networks_(networks) {} StunProber::~StunProber() { + RTC_DCHECK(thread_checker_.IsCurrent()); for (auto* req : requesters_) { if (req) { delete req; @@ -357,8 +359,8 @@ // Deletion of AsyncResolverInterface can't be done in OnResolveResult which // handles SignalDone. - invoker_.AsyncInvoke<void>(RTC_FROM_HERE, thread_, - [resolver] { resolver->Destroy(false); }); + thread_->PostTask( + webrtc::ToQueuedTask([resolver] { resolver->Destroy(false); })); servers_.pop_back(); if (servers_.size()) { @@ -451,12 +453,13 @@ } void StunProber::MaybeScheduleStunRequests() { - RTC_DCHECK(thread_checker_.IsCurrent()); + RTC_DCHECK_RUN_ON(thread_); int64_t now = rtc::TimeMillis(); if (Done()) { - invoker_.AsyncInvokeDelayed<void>( - RTC_FROM_HERE, thread_, [this] { ReportOnFinished(SUCCESS); }, + thread_->PostDelayedTask( + webrtc::ToQueuedTask(task_safety_.flag(), + [this] { ReportOnFinished(SUCCESS); }), timeout_ms_); return; } @@ -467,8 +470,9 @@ } next_request_time_ms_ = now + interval_ms_; } - invoker_.AsyncInvokeDelayed<void>( - RTC_FROM_HERE, thread_, [this] { MaybeScheduleStunRequests(); }, + thread_->PostDelayedTask( + webrtc::ToQueuedTask(task_safety_.flag(), + [this] { MaybeScheduleStunRequests(); }), get_wake_up_interval_ms()); }
diff --git a/p2p/stunprober/stun_prober.h b/p2p/stunprober/stun_prober.h index 4153fd6..43d84ff 100644 --- a/p2p/stunprober/stun_prober.h +++ b/p2p/stunprober/stun_prober.h
@@ -16,13 +16,13 @@ #include <vector> #include "api/sequence_checker.h" -#include "rtc_base/async_invoker.h" #include "rtc_base/byte_buffer.h" #include "rtc_base/constructor_magic.h" #include "rtc_base/ip_address.h" #include "rtc_base/network.h" #include "rtc_base/socket_address.h" #include "rtc_base/system/rtc_export.h" +#include "rtc_base/task_utils/pending_task_safety_flag.h" #include "rtc_base/thread.h" namespace rtc { @@ -233,8 +233,6 @@ // This tracks how many of the sockets are ready. size_t total_ready_sockets_ = 0; - rtc::AsyncInvoker invoker_; - Observer* observer_ = nullptr; // TODO(guoweis): Remove this once all dependencies move away from // AsyncCallback. @@ -242,6 +240,8 @@ rtc::NetworkManager::NetworkList networks_; + webrtc::ScopedTaskSafety task_safety_; + RTC_DISALLOW_COPY_AND_ASSIGN(StunProber); };