Refactoring: move ownership of RtcEventLog from Call to PeerConnection
This CL is a pure refactoring which should not result in any functinal
changes. It moves ownership of the RtcEventLog from webrtc::Call to the
webrtc::PeerConnection object.
This is done so that we can add RtcEventLog support for ICE events -
which will require the TransportController to have a pointer to the
RtcEventLog. PeerConnection is the closest common owner of both Call and
TransportController (through WebRtcSession).
BUG=webrtc:6393
Review-Url: https://codereview.webrtc.org/2353033005
Cr-Commit-Position: refs/heads/master@{#14578}
diff --git a/webrtc/api/DEPS b/webrtc/api/DEPS
index fcb506d..ee97620 100644
--- a/webrtc/api/DEPS
+++ b/webrtc/api/DEPS
@@ -5,6 +5,7 @@
"+webrtc/media",
"+webrtc/p2p",
"+webrtc/pc",
+ "+webrtc/logging/rtc_event_log",
"+webrtc/modules/audio_device",
"+webrtc/modules/rtp_rtcp",
"+webrtc/modules/video_coding",
@@ -20,7 +21,7 @@
"peerconnection_jni\.cc": [
"+webrtc/voice_engine",
],
- "peerconnectionfactory.\cc": [
+ "peerconnectionfactory\.cc": [
"+webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h",
- ]
+ ],
}
diff --git a/webrtc/api/mediacontroller.cc b/webrtc/api/mediacontroller.cc
index e688e39..319dd1f 100644
--- a/webrtc/api/mediacontroller.cc
+++ b/webrtc/api/mediacontroller.cc
@@ -30,11 +30,14 @@
public:
MediaController(const cricket::MediaConfig& media_config,
rtc::Thread* worker_thread,
- cricket::ChannelManager* channel_manager)
+ cricket::ChannelManager* channel_manager,
+ webrtc::RtcEventLog* event_log)
: worker_thread_(worker_thread),
media_config_(media_config),
- channel_manager_(channel_manager) {
+ channel_manager_(channel_manager),
+ call_config_(event_log) {
RTC_DCHECK(worker_thread);
+ RTC_DCHECK(event_log);
worker_thread_->Invoke<void>(RTC_FROM_HERE,
rtc::Bind(&MediaController::Construct_w, this,
channel_manager_->media_engine()));
@@ -89,7 +92,8 @@
MediaControllerInterface* MediaControllerInterface::Create(
const cricket::MediaConfig& config,
rtc::Thread* worker_thread,
- cricket::ChannelManager* channel_manager) {
- return new MediaController(config, worker_thread, channel_manager);
+ cricket::ChannelManager* channel_manager,
+ webrtc::RtcEventLog* event_log) {
+ return new MediaController(config, worker_thread, channel_manager, event_log);
}
} // namespace webrtc
diff --git a/webrtc/api/mediacontroller.h b/webrtc/api/mediacontroller.h
index d7c76ab..5ada20d 100644
--- a/webrtc/api/mediacontroller.h
+++ b/webrtc/api/mediacontroller.h
@@ -21,6 +21,7 @@
namespace webrtc {
class Call;
class VoiceEngine;
+class RtcEventLog;
// The MediaController currently owns shared state between media channels, but
// in the future will create and own RtpSenders and RtpReceivers.
@@ -29,7 +30,8 @@
static MediaControllerInterface* Create(
const cricket::MediaConfig& config,
rtc::Thread* worker_thread,
- cricket::ChannelManager* channel_manager);
+ cricket::ChannelManager* channel_manager,
+ webrtc::RtcEventLog* event_log);
virtual ~MediaControllerInterface() {}
virtual void Close() = 0;
diff --git a/webrtc/api/peerconnection.cc b/webrtc/api/peerconnection.cc
index 7cc5d00..dd99e36 100644
--- a/webrtc/api/peerconnection.cc
+++ b/webrtc/api/peerconnection.cc
@@ -37,8 +37,10 @@
#include "webrtc/base/stringutils.h"
#include "webrtc/base/trace_event.h"
#include "webrtc/call.h"
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
#include "webrtc/media/sctp/sctpdataengine.h"
#include "webrtc/pc/channelmanager.h"
+#include "webrtc/system_wrappers/include/clock.h"
#include "webrtc/system_wrappers/include/field_trial.h"
namespace {
@@ -571,6 +573,7 @@
ice_state_(kIceNew),
ice_connection_state_(kIceConnectionNew),
ice_gathering_state_(kIceGatheringNew),
+ event_log_(RtcEventLog::Create(webrtc::Clock::GetRealTimeClock())),
rtcp_cname_(GenerateRtcpCname()),
local_streams_(StreamCollection::Create()),
remote_streams_(StreamCollection::Create()) {}
@@ -619,8 +622,8 @@
return false;
}
- media_controller_.reset(
- factory_->CreateMediaController(configuration.media_config));
+ media_controller_.reset(factory_->CreateMediaController(
+ configuration.media_config, event_log_.get()));
session_.reset(new WebRtcSession(
media_controller_.get(), factory_->network_thread(),
@@ -2343,10 +2346,10 @@
bool PeerConnection::StartRtcEventLog_w(rtc::PlatformFile file,
int64_t max_size_bytes) {
- return media_controller_->call_w()->StartEventLog(file, max_size_bytes);
+ return event_log_->StartLogging(file, max_size_bytes);
}
void PeerConnection::StopRtcEventLog_w() {
- media_controller_->call_w()->StopEventLog();
+ event_log_->StopLogging();
}
} // namespace webrtc
diff --git a/webrtc/api/peerconnection.h b/webrtc/api/peerconnection.h
index 3087160..f5b0af8 100644
--- a/webrtc/api/peerconnection.h
+++ b/webrtc/api/peerconnection.h
@@ -29,6 +29,7 @@
class MediaStreamObserver;
class VideoRtpReceiver;
+class RtcEventLog;
// Populates |session_options| from |rtc_options|, and returns true if options
// are valid.
@@ -392,6 +393,8 @@
IceGatheringState ice_gathering_state_;
std::unique_ptr<cricket::PortAllocator> port_allocator_;
+ // The EventLog needs to outlive the media controller.
+ std::unique_ptr<RtcEventLog> event_log_;
std::unique_ptr<MediaControllerInterface> media_controller_;
// One PeerConnection has only one RTCP CNAME.
@@ -426,7 +429,6 @@
std::vector<
rtc::scoped_refptr<RtpReceiverProxyWithInternal<RtpReceiverInternal>>>
receivers_;
-
std::unique_ptr<WebRtcSession> session_;
std::unique_ptr<StatsCollector> stats_;
rtc::scoped_refptr<RTCStatsCollector> stats_collector_;
diff --git a/webrtc/api/peerconnectionfactory.cc b/webrtc/api/peerconnectionfactory.cc
index f49c291..e76701e 100644
--- a/webrtc/api/peerconnectionfactory.cc
+++ b/webrtc/api/peerconnectionfactory.cc
@@ -302,10 +302,11 @@
}
webrtc::MediaControllerInterface* PeerConnectionFactory::CreateMediaController(
- const cricket::MediaConfig& config) const {
+ const cricket::MediaConfig& config,
+ webrtc::RtcEventLog* event_log) const {
RTC_DCHECK(signaling_thread_->IsCurrent());
return MediaControllerInterface::Create(config, worker_thread_,
- channel_manager_.get());
+ channel_manager_.get(), event_log);
}
cricket::TransportController* PeerConnectionFactory::CreateTransportController(
diff --git a/webrtc/api/peerconnectionfactory.h b/webrtc/api/peerconnectionfactory.h
index 7684b95..7a30ab4 100644
--- a/webrtc/api/peerconnectionfactory.h
+++ b/webrtc/api/peerconnectionfactory.h
@@ -29,6 +29,8 @@
namespace webrtc {
+class RtcEventLog;
+
class PeerConnectionFactory : public PeerConnectionFactoryInterface {
public:
void SetOptions(const Options& options) override;
@@ -89,7 +91,8 @@
void StopRtcEventLog() override {}
virtual webrtc::MediaControllerInterface* CreateMediaController(
- const cricket::MediaConfig& config) const;
+ const cricket::MediaConfig& config,
+ RtcEventLog* event_log) const;
virtual cricket::TransportController* CreateTransportController(
cricket::PortAllocator* port_allocator,
bool redetermine_role_on_ice_restart);
diff --git a/webrtc/api/peerconnectioninterface_unittest.cc b/webrtc/api/peerconnectioninterface_unittest.cc
index d91336c..a4a11e1 100644
--- a/webrtc/api/peerconnectioninterface_unittest.cc
+++ b/webrtc/api/peerconnectioninterface_unittest.cc
@@ -558,12 +558,13 @@
class PeerConnectionFactoryForTest : public webrtc::PeerConnectionFactory {
public:
webrtc::MediaControllerInterface* CreateMediaController(
- const cricket::MediaConfig& config) const override {
+ const cricket::MediaConfig& config,
+ webrtc::RtcEventLog* event_log) const override {
create_media_controller_called_ = true;
create_media_controller_config_ = config;
webrtc::MediaControllerInterface* mc =
- PeerConnectionFactory::CreateMediaController(config);
+ PeerConnectionFactory::CreateMediaController(config, event_log);
EXPECT_TRUE(mc != nullptr);
return mc;
}
diff --git a/webrtc/api/rtcstatscollector_unittest.cc b/webrtc/api/rtcstatscollector_unittest.cc
index 7103864..0da772f 100644
--- a/webrtc/api/rtcstatscollector_unittest.cc
+++ b/webrtc/api/rtcstatscollector_unittest.cc
@@ -29,6 +29,7 @@
#include "webrtc/base/thread_checker.h"
#include "webrtc/base/timedelta.h"
#include "webrtc/base/timeutils.h"
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
#include "webrtc/media/base/fakemediaengine.h"
#include "webrtc/p2p/base/port.h"
@@ -112,14 +113,15 @@
RTCStatsCollectorTestHelper()
: worker_thread_(rtc::Thread::Current()),
network_thread_(rtc::Thread::Current()),
- channel_manager_(new cricket::ChannelManager(
- new cricket::FakeMediaEngine(),
- worker_thread_,
- network_thread_)),
+ channel_manager_(
+ new cricket::ChannelManager(new cricket::FakeMediaEngine(),
+ worker_thread_,
+ network_thread_)),
media_controller_(
MediaControllerInterface::Create(cricket::MediaConfig(),
worker_thread_,
- channel_manager_.get())),
+ channel_manager_.get(),
+ &event_log_)),
session_(media_controller_.get()),
pc_() {
// Default return values for mocks.
@@ -148,6 +150,7 @@
private:
rtc::ScopedFakeClock fake_clock_;
+ webrtc::RtcEventLogNullImpl event_log_;
rtc::Thread* const worker_thread_;
rtc::Thread* const network_thread_;
std::unique_ptr<cricket::ChannelManager> channel_manager_;
diff --git a/webrtc/api/rtpsenderreceiver_unittest.cc b/webrtc/api/rtpsenderreceiver_unittest.cc
index 3fccfb9..4e98f0c 100644
--- a/webrtc/api/rtpsenderreceiver_unittest.cc
+++ b/webrtc/api/rtpsenderreceiver_unittest.cc
@@ -24,6 +24,7 @@
#include "webrtc/api/videotrack.h"
#include "webrtc/api/videotracksource.h"
#include "webrtc/base/gunit.h"
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
#include "webrtc/media/base/fakemediaengine.h"
#include "webrtc/media/base/mediachannel.h"
#include "webrtc/media/engine/fakewebrtccall.h"
@@ -56,7 +57,7 @@
channel_manager_(media_engine_,
rtc::Thread::Current(),
rtc::Thread::Current()),
- fake_call_(webrtc::Call::Config()),
+ fake_call_(Call::Config(&event_log_)),
fake_media_controller_(&channel_manager_, &fake_call_),
stream_(MediaStream::Create(kStreamLabel1)) {
// Create channels to be used by the RtpSenders and RtpReceivers.
@@ -218,6 +219,7 @@
}
protected:
+ webrtc::RtcEventLogNullImpl event_log_;
cricket::FakeMediaEngine* media_engine_;
cricket::FakeTransportController fake_transport_controller_;
cricket::ChannelManager channel_manager_;
diff --git a/webrtc/api/statscollector_unittest.cc b/webrtc/api/statscollector_unittest.cc
index acef448..8d5978f 100644
--- a/webrtc/api/statscollector_unittest.cc
+++ b/webrtc/api/statscollector_unittest.cc
@@ -29,6 +29,7 @@
#include "webrtc/base/fakesslidentity.h"
#include "webrtc/base/gunit.h"
#include "webrtc/base/network.h"
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
#include "webrtc/media/base/fakemediaengine.h"
#include "webrtc/media/base/test/mock_mediachannel.h"
#include "webrtc/p2p/base/faketransportcontroller.h"
@@ -493,7 +494,8 @@
media_controller_(
webrtc::MediaControllerInterface::Create(cricket::MediaConfig(),
worker_thread_,
- channel_manager_.get())),
+ channel_manager_.get(),
+ &event_log_)),
session_(media_controller_.get()) {
// By default, we ignore session GetStats calls.
EXPECT_CALL(session_, GetTransportStats(_)).WillRepeatedly(Return(false));
@@ -751,6 +753,7 @@
srtp_crypto_suite);
}
+ webrtc::RtcEventLogNullImpl event_log_;
rtc::Thread* const worker_thread_;
rtc::Thread* const network_thread_;
cricket::FakeMediaEngine* media_engine_;
diff --git a/webrtc/api/webrtcsession_unittest.cc b/webrtc/api/webrtcsession_unittest.cc
index 6c0170e..ba9ea2b 100644
--- a/webrtc/api/webrtcsession_unittest.cc
+++ b/webrtc/api/webrtcsession_unittest.cc
@@ -35,6 +35,7 @@
#include "webrtc/base/stringutils.h"
#include "webrtc/base/thread.h"
#include "webrtc/base/virtualsocketserver.h"
+#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
#include "webrtc/media/base/fakemediaengine.h"
#include "webrtc/media/base/fakevideorenderer.h"
#include "webrtc/media/base/mediachannel.h"
@@ -331,15 +332,15 @@
WebRtcSessionTest()
: media_engine_(new cricket::FakeMediaEngine()),
data_engine_(new cricket::FakeDataEngine()),
- channel_manager_(
- new cricket::ChannelManager(media_engine_,
- data_engine_,
- rtc::Thread::Current())),
- fake_call_(webrtc::Call::Config()),
+ channel_manager_(new cricket::ChannelManager(media_engine_,
+ data_engine_,
+ rtc::Thread::Current())),
+ fake_call_(webrtc::Call::Config(&event_log_)),
media_controller_(
webrtc::MediaControllerInterface::Create(cricket::MediaConfig(),
rtc::Thread::Current(),
- channel_manager_.get())),
+ channel_manager_.get(),
+ &event_log_)),
tdesc_factory_(new cricket::TransportDescriptionFactory()),
desc_factory_(
new cricket::MediaSessionDescriptionFactory(channel_manager_.get(),
@@ -1480,6 +1481,7 @@
allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP);
}
+ webrtc::RtcEventLogNullImpl event_log_;
cricket::FakeMediaEngine* media_engine_;
cricket::FakeDataEngine* data_engine_;
std::unique_ptr<cricket::ChannelManager> channel_manager_;