Remove AsyncInvoker dependency from P2PTransportChannel

Bug: webrtc:11988
Change-Id: Ic7e1f35a18c0af7ae3f602a2d81a0b7fd45b6cf0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/194337
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32663}
This commit is contained in:
Tomas Gunnarsson
2020-11-22 13:44:36 +01:00
committed by Commit Bot
parent e27f3dea82
commit c5fd745672
3 changed files with 21 additions and 22 deletions

View File

@ -108,6 +108,7 @@ rtc_library("rtc_p2p") {
"../rtc_base/network:sent_packet",
"../rtc_base/synchronization:mutex",
"../rtc_base/system:rtc_export",
"../rtc_base/task_utils:pending_task_safety_flag",
"../rtc_base/task_utils:to_queued_task",
"../rtc_base/third_party/base64",
"../rtc_base/third_party/sigslot",

View File

@ -109,6 +109,7 @@ namespace cricket {
using webrtc::RTCError;
using webrtc::RTCErrorType;
using webrtc::ToQueuedTask;
bool IceCredentialsChanged(const std::string& old_ufrag,
const std::string& old_pwd,
@ -192,6 +193,7 @@ P2PTransportChannel::P2PTransportChannel(
}
P2PTransportChannel::~P2PTransportChannel() {
RTC_DCHECK_RUN_ON(network_thread_);
std::vector<Connection*> copy(connections().begin(), connections().end());
for (Connection* con : copy) {
con->Destroy();
@ -200,7 +202,6 @@ P2PTransportChannel::~P2PTransportChannel() {
p.resolver_->Destroy(false);
}
resolvers_.clear();
RTC_DCHECK_RUN_ON(network_thread_);
}
// Add the allocator session to our list so that we know which sessions
@ -283,10 +284,11 @@ bool P2PTransportChannel::MaybeSwitchSelectedConnection(
// threshold, the new connection is in a better receiving state than the
// currently selected connection. So we need to re-check whether it needs
// to be switched at a later time.
invoker_.AsyncInvokeDelayed<void>(
RTC_FROM_HERE, thread(),
rtc::Bind(&P2PTransportChannel::SortConnectionsAndUpdateState, this,
*result.recheck_event),
network_thread_->PostDelayedTask(
ToQueuedTask(task_safety_,
[this, recheck = *result.recheck_event]() {
SortConnectionsAndUpdateState(recheck);
}),
result.recheck_event->recheck_delay_ms);
}
@ -1238,8 +1240,8 @@ void P2PTransportChannel::OnCandidateResolved(
Candidate candidate = p->candidate_;
resolvers_.erase(p);
AddRemoteCandidateWithResolver(candidate, resolver);
thread()->PostTask(
webrtc::ToQueuedTask([] {}, [resolver] { resolver->Destroy(false); }));
network_thread_->PostTask(
ToQueuedTask([resolver]() { resolver->Destroy(false); }));
}
void P2PTransportChannel::AddRemoteCandidateWithResolver(
@ -1612,10 +1614,10 @@ void P2PTransportChannel::RequestSortAndStateUpdate(
IceControllerEvent reason_to_sort) {
RTC_DCHECK_RUN_ON(network_thread_);
if (!sort_dirty_) {
invoker_.AsyncInvoke<void>(
RTC_FROM_HERE, thread(),
rtc::Bind(&P2PTransportChannel::SortConnectionsAndUpdateState, this,
reason_to_sort));
network_thread_->PostTask(
ToQueuedTask(task_safety_, [this, reason_to_sort]() {
SortConnectionsAndUpdateState(reason_to_sort);
}));
sort_dirty_ = true;
}
}
@ -1630,9 +1632,8 @@ void P2PTransportChannel::MaybeStartPinging() {
RTC_LOG(LS_INFO) << ToString()
<< ": Have a pingable connection for the first time; "
"starting to ping.";
invoker_.AsyncInvoke<void>(
RTC_FROM_HERE, thread(),
rtc::Bind(&P2PTransportChannel::CheckAndPing, this));
network_thread_->PostTask(
ToQueuedTask(task_safety_, [this]() { CheckAndPing(); }));
regathering_controller_->Start();
started_pinging_ = true;
}
@ -1949,9 +1950,8 @@ void P2PTransportChannel::CheckAndPing() {
MarkConnectionPinged(conn);
}
invoker_.AsyncInvokeDelayed<void>(
RTC_FROM_HERE, thread(),
rtc::Bind(&P2PTransportChannel::CheckAndPing, this), delay);
network_thread_->PostDelayedTask(
ToQueuedTask(task_safety_, [this]() { CheckAndPing(); }), delay);
}
// This method is only for unit testing.

View File

@ -41,11 +41,11 @@
#include "p2p/base/port_allocator.h"
#include "p2p/base/port_interface.h"
#include "p2p/base/regathering_controller.h"
#include "rtc_base/async_invoker.h"
#include "rtc_base/async_packet_socket.h"
#include "rtc_base/constructor_magic.h"
#include "rtc_base/strings/string_builder.h"
#include "rtc_base/system/rtc_export.h"
#include "rtc_base/task_utils/pending_task_safety_flag.h"
#include "rtc_base/third_party/sigslot/sigslot.h"
#include "rtc_base/thread_annotations.h"
@ -209,8 +209,6 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal {
}
private:
rtc::Thread* thread() const { return network_thread_; }
bool IsGettingPorts() {
RTC_DCHECK_RUN_ON(network_thread_);
return allocator_session()->IsGettingPorts();
@ -361,12 +359,13 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal {
int64_t ComputeEstimatedDisconnectedTimeMs(int64_t now,
Connection* old_connection);
webrtc::ScopedTaskSafety task_safety_;
std::string transport_name_ RTC_GUARDED_BY(network_thread_);
int component_ RTC_GUARDED_BY(network_thread_);
PortAllocator* allocator_ RTC_GUARDED_BY(network_thread_);
webrtc::AsyncResolverFactory* async_resolver_factory_
RTC_GUARDED_BY(network_thread_);
rtc::Thread* network_thread_;
rtc::Thread* const network_thread_;
bool incoming_only_ RTC_GUARDED_BY(network_thread_);
int error_ RTC_GUARDED_BY(network_thread_);
std::vector<std::unique_ptr<PortAllocatorSession>> allocator_sessions_
@ -419,7 +418,6 @@ class RTC_EXPORT P2PTransportChannel : public IceTransportInternal {
bool has_been_writable_ RTC_GUARDED_BY(network_thread_) =
false; // if writable_ has ever been true
rtc::AsyncInvoker invoker_ RTC_GUARDED_BY(network_thread_);
absl::optional<rtc::NetworkRoute> network_route_
RTC_GUARDED_BY(network_thread_);
webrtc::IceEventLog ice_event_log_ RTC_GUARDED_BY(network_thread_);