From 4f281f142ae749d4d181415c8d06ac65995e431b Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Mon, 18 Jan 2021 13:29:00 +0100 Subject: [PATCH] Cleanup FakeRtcEventLog from thread awareness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To avoid it relying on AsyncInvoker. Bug: webrtc:12339 Change-Id: I086305a74cc05fc8ed88a651e71a8f707c2c1d5c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202252 Reviewed-by: Björn Terelius Reviewed-by: Per Kjellander Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/master@{#33044} --- logging/BUILD.gn | 4 +-- logging/rtc_event_log/fake_rtc_event_log.cc | 28 +++++++++---------- logging/rtc_event_log/fake_rtc_event_log.h | 16 +++++------ .../fake_rtc_event_log_factory.cc | 6 ++-- .../fake_rtc_event_log_factory.h | 11 +++----- pc/peer_connection_integrationtest.cc | 18 +++++------- 6 files changed, 37 insertions(+), 46 deletions(-) diff --git a/logging/BUILD.gn b/logging/BUILD.gn index 9fccf5c116..277200def2 100644 --- a/logging/BUILD.gn +++ b/logging/BUILD.gn @@ -284,11 +284,9 @@ rtc_library("fake_rtc_event_log") { ] deps = [ - ":ice_log", "../api/rtc_event_log", "../rtc_base", - "../rtc_base:checks", - "../rtc_base:threading", + "../rtc_base/synchronization:mutex", ] } diff --git a/logging/rtc_event_log/fake_rtc_event_log.cc b/logging/rtc_event_log/fake_rtc_event_log.cc index e84ea2217b..5a44b00694 100644 --- a/logging/rtc_event_log/fake_rtc_event_log.cc +++ b/logging/rtc_event_log/fake_rtc_event_log.cc @@ -10,31 +10,29 @@ #include "logging/rtc_event_log/fake_rtc_event_log.h" -#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h" -#include "rtc_base/checks.h" -#include "rtc_base/logging.h" +#include +#include + +#include "api/rtc_event_log/rtc_event_log.h" +#include "rtc_base/synchronization/mutex.h" namespace webrtc { -FakeRtcEventLog::FakeRtcEventLog(rtc::Thread* thread) : thread_(thread) { - RTC_DCHECK(thread_); -} -FakeRtcEventLog::~FakeRtcEventLog() = default; - bool FakeRtcEventLog::StartLogging(std::unique_ptr output, int64_t output_period_ms) { return true; } -void FakeRtcEventLog::StopLogging() { - invoker_.Flush(thread_); -} +void FakeRtcEventLog::StopLogging() {} void FakeRtcEventLog::Log(std::unique_ptr event) { - RtcEvent::Type rtc_event_type = event->GetType(); - invoker_.AsyncInvoke(RTC_FROM_HERE, thread_, [this, rtc_event_type] { - ++count_[rtc_event_type]; - }); + MutexLock lock(&mu_); + ++count_[event->GetType()]; +} + +int FakeRtcEventLog::GetEventCount(RtcEvent::Type event_type) { + MutexLock lock(&mu_); + return count_[event_type]; } } // namespace webrtc diff --git a/logging/rtc_event_log/fake_rtc_event_log.h b/logging/rtc_event_log/fake_rtc_event_log.h index a34cc27b72..effa7507f1 100644 --- a/logging/rtc_event_log/fake_rtc_event_log.h +++ b/logging/rtc_event_log/fake_rtc_event_log.h @@ -16,25 +16,25 @@ #include "api/rtc_event_log/rtc_event.h" #include "api/rtc_event_log/rtc_event_log.h" -#include "rtc_base/async_invoker.h" -#include "rtc_base/thread.h" +#include "rtc_base/synchronization/mutex.h" +#include "rtc_base/thread_annotations.h" namespace webrtc { class FakeRtcEventLog : public RtcEventLog { public: - explicit FakeRtcEventLog(rtc::Thread* thread); - ~FakeRtcEventLog() override; + FakeRtcEventLog() = default; + ~FakeRtcEventLog() override = default; + bool StartLogging(std::unique_ptr output, int64_t output_period_ms) override; void StopLogging() override; void Log(std::unique_ptr event) override; - int GetEventCount(RtcEvent::Type event_type) { return count_[event_type]; } + int GetEventCount(RtcEvent::Type event_type); private: - std::map count_; - rtc::Thread* thread_; - rtc::AsyncInvoker invoker_; + Mutex mu_; + std::map count_ RTC_GUARDED_BY(mu_); }; } // namespace webrtc diff --git a/logging/rtc_event_log/fake_rtc_event_log_factory.cc b/logging/rtc_event_log/fake_rtc_event_log_factory.cc index f84f74fdb6..f663ec5abe 100644 --- a/logging/rtc_event_log/fake_rtc_event_log_factory.cc +++ b/logging/rtc_event_log/fake_rtc_event_log_factory.cc @@ -10,14 +10,16 @@ #include "logging/rtc_event_log/fake_rtc_event_log_factory.h" +#include + #include "api/rtc_event_log/rtc_event_log.h" #include "logging/rtc_event_log/fake_rtc_event_log.h" namespace webrtc { std::unique_ptr FakeRtcEventLogFactory::CreateRtcEventLog( - RtcEventLog::EncodingType encoding_type) { - std::unique_ptr fake_event_log(new FakeRtcEventLog(thread())); + RtcEventLog::EncodingType /*encoding_type*/) { + auto fake_event_log = std::make_unique(); last_log_created_ = fake_event_log.get(); return fake_event_log; } diff --git a/logging/rtc_event_log/fake_rtc_event_log_factory.h b/logging/rtc_event_log/fake_rtc_event_log_factory.h index 873e50efdc..114c3e6323 100644 --- a/logging/rtc_event_log/fake_rtc_event_log_factory.h +++ b/logging/rtc_event_log/fake_rtc_event_log_factory.h @@ -15,24 +15,21 @@ #include "api/rtc_event_log/rtc_event_log_factory_interface.h" #include "logging/rtc_event_log/fake_rtc_event_log.h" -#include "rtc_base/thread.h" namespace webrtc { class FakeRtcEventLogFactory : public RtcEventLogFactoryInterface { public: - explicit FakeRtcEventLogFactory(rtc::Thread* thread) : thread_(thread) {} - ~FakeRtcEventLogFactory() override {} + FakeRtcEventLogFactory() = default; + ~FakeRtcEventLogFactory() override = default; std::unique_ptr CreateRtcEventLog( RtcEventLog::EncodingType encoding_type) override; - webrtc::RtcEventLog* last_log_created() { return last_log_created_; } - rtc::Thread* thread() { return thread_; } + webrtc::FakeRtcEventLog* last_log_created() { return last_log_created_; } private: - webrtc::RtcEventLog* last_log_created_; - rtc::Thread* thread_; + webrtc::FakeRtcEventLog* last_log_created_; }; } // namespace webrtc diff --git a/pc/peer_connection_integrationtest.cc b/pc/peer_connection_integrationtest.cc index 00055527d1..7b2d171035 100644 --- a/pc/peer_connection_integrationtest.cc +++ b/pc/peer_connection_integrationtest.cc @@ -1356,13 +1356,11 @@ class PeerConnectionIntegrationBaseTest : public ::testing::Test { const PeerConnectionFactory::Options* options, const RTCConfiguration* config, webrtc::PeerConnectionDependencies dependencies) { - std::unique_ptr event_log_factory( - new webrtc::FakeRtcEventLogFactory(rtc::Thread::Current())); - return CreatePeerConnectionWrapper(debug_name, options, config, - std::move(dependencies), - std::move(event_log_factory), - /*reset_encoder_factory=*/false, - /*reset_decoder_factory=*/false); + return CreatePeerConnectionWrapper( + debug_name, options, config, std::move(dependencies), + std::make_unique(), + /*reset_encoder_factory=*/false, + /*reset_decoder_factory=*/false); } bool CreatePeerConnectionWrappers() { @@ -5238,11 +5236,9 @@ TEST_P(PeerConnectionIntegrationTest, ASSERT_NE(nullptr, caller()->event_log_factory()); ASSERT_NE(nullptr, callee()->event_log_factory()); webrtc::FakeRtcEventLog* caller_event_log = - static_cast( - caller()->event_log_factory()->last_log_created()); + caller()->event_log_factory()->last_log_created(); webrtc::FakeRtcEventLog* callee_event_log = - static_cast( - callee()->event_log_factory()->last_log_created()); + callee()->event_log_factory()->last_log_created(); ASSERT_NE(nullptr, caller_event_log); ASSERT_NE(nullptr, callee_event_log); int caller_ice_config_count = caller_event_log->GetEventCount(