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:
committed by
Commit Bot
parent
e27f3dea82
commit
c5fd745672
@ -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",
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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_);
|
||||
|
||||
Reference in New Issue
Block a user