Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(470)

Unified Diff: webrtc/pc/channelmanager.cc

Issue 1903393004: Added network thread to rtc::BaseChannel (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: fix flakiness of WebRtcSessionTest.TestPacketOptionsAndOnPacketSent Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/pc/channelmanager.h ('k') | webrtc/pc/channelmanager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/pc/channelmanager.cc
diff --git a/webrtc/pc/channelmanager.cc b/webrtc/pc/channelmanager.cc
index f59a3df9c72f7059e0c1a66aed639a66e2dbe518..6800d83f60e9891cdc884d45992ba13f6b63b854 100644
--- a/webrtc/pc/channelmanager.cc
+++ b/webrtc/pc/channelmanager.cc
@@ -44,25 +44,26 @@ static DataEngineInterface* ConstructDataEngine() {
ChannelManager::ChannelManager(MediaEngineInterface* me,
DataEngineInterface* dme,
- rtc::Thread* worker_thread) {
- Construct(me, dme, worker_thread);
+ rtc::Thread* thread) {
+ Construct(me, dme, thread, thread);
}
ChannelManager::ChannelManager(MediaEngineInterface* me,
- rtc::Thread* worker_thread) {
- Construct(me,
- ConstructDataEngine(),
- worker_thread);
+ rtc::Thread* worker_thread,
+ rtc::Thread* network_thread) {
+ Construct(me, ConstructDataEngine(), worker_thread, network_thread);
}
void ChannelManager::Construct(MediaEngineInterface* me,
DataEngineInterface* dme,
- rtc::Thread* worker_thread) {
+ rtc::Thread* worker_thread,
+ rtc::Thread* network_thread) {
media_engine_.reset(me);
data_media_engine_.reset(dme);
initialized_ = false;
main_thread_ = rtc::Thread::Current();
worker_thread_ = worker_thread;
+ network_thread_ = network_thread;
audio_output_volume_ = kNotSetOutputVolume;
capturing_ = false;
enable_rtx_ = false;
@@ -144,18 +145,16 @@ bool ChannelManager::Init() {
if (initialized_) {
return false;
}
- ASSERT(worker_thread_ != NULL);
- if (!worker_thread_) {
- return false;
- }
- if (worker_thread_ != rtc::Thread::Current()) {
- // Do not allow invoking calls to other threads on the worker thread.
- worker_thread_->Invoke<bool>(rtc::Bind(
- &rtc::Thread::SetAllowBlockingCalls, worker_thread_, false));
+ RTC_DCHECK(network_thread_);
+ RTC_DCHECK(worker_thread_);
+ if (!network_thread_->IsCurrent()) {
+ // Do not allow invoking calls to other threads on the network thread.
+ network_thread_->Invoke<bool>(
+ rtc::Bind(&rtc::Thread::SetAllowBlockingCalls, network_thread_, false));
}
- initialized_ = worker_thread_->Invoke<bool>(Bind(
- &ChannelManager::InitMediaEngine_w, this));
+ initialized_ = worker_thread_->Invoke<bool>(
+ Bind(&ChannelManager::InitMediaEngine_w, this));
ASSERT(initialized_);
if (!initialized_) {
return false;
@@ -228,9 +227,9 @@ VoiceChannel* ChannelManager::CreateVoiceChannel_w(
return nullptr;
VoiceChannel* voice_channel =
- new VoiceChannel(worker_thread_, media_engine_.get(), media_channel,
- transport_controller, content_name, rtcp);
- if (!voice_channel->Init()) {
+ new VoiceChannel(worker_thread_, network_thread_, media_engine_.get(),
+ media_channel, transport_controller, content_name, rtcp);
+ if (!voice_channel->Init_w()) {
delete voice_channel;
return nullptr;
}
@@ -286,9 +285,10 @@ VideoChannel* ChannelManager::CreateVideoChannel_w(
return NULL;
}
- VideoChannel* video_channel = new VideoChannel(
- worker_thread_, media_channel, transport_controller, content_name, rtcp);
- if (!video_channel->Init()) {
+ VideoChannel* video_channel =
+ new VideoChannel(worker_thread_, network_thread_, media_channel,
+ transport_controller, content_name, rtcp);
+ if (!video_channel->Init_w()) {
delete video_channel;
return NULL;
}
@@ -344,9 +344,10 @@ DataChannel* ChannelManager::CreateDataChannel_w(
return NULL;
}
- DataChannel* data_channel = new DataChannel(
- worker_thread_, media_channel, transport_controller, content_name, rtcp);
- if (!data_channel->Init()) {
+ DataChannel* data_channel =
+ new DataChannel(worker_thread_, network_thread_, media_channel,
+ transport_controller, content_name, rtcp);
+ if (!data_channel->Init_w()) {
LOG(LS_WARNING) << "Failed to init data channel.";
delete data_channel;
return NULL;
« no previous file with comments | « webrtc/pc/channelmanager.h ('k') | webrtc/pc/channelmanager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698