Reland of Make the default ctor of rtc::Thread, protected
This is a partial re-land. The change doesn't make the default Thread ctor protected anymore but it does mark it as deprecated and updates all use of it in WebRTC.
Original issue's description:
Make the default ctor of rtc::Thread, protected.
The goal is to force use of Thread::Create or Thread::CreateWithSocketServer.
The default constructor constructs a 'default' socket server, which is usually a 'physical' socket server, but not always. Not every instance of Thread actually needs to have network support, so it's better to have this be explicit instead of unknowingly instantiate one.
BUG=none
Review-Url: https://codereview.webrtc.org/2977953002
Cr-Commit-Position: refs/heads/master@{#19031}
diff --git a/webrtc/rtc_base/messagequeue_unittest.cc b/webrtc/rtc_base/messagequeue_unittest.cc
index e31adf9..4003e2d 100644
--- a/webrtc/rtc_base/messagequeue_unittest.cc
+++ b/webrtc/rtc_base/messagequeue_unittest.cc
@@ -38,9 +38,9 @@
bool IsLocked() {
// We have to do this on a worker thread, or else the TryEnter will
// succeed, since our critical sections are reentrant.
- Thread worker;
- worker.Start();
- return worker.Invoke<bool>(
+ std::unique_ptr<Thread> worker(Thread::CreateWithSocketServer());
+ worker->Start();
+ return worker->Invoke<bool>(
RTC_FROM_HERE, rtc::Bind(&MessageQueueTest::IsLocked_Worker, this));
}
};
@@ -152,10 +152,10 @@
// all registered message queues.
TEST(MessageQueueManager, ProcessAllMessageQueues) {
Event entered_process_all_message_queues(true, false);
- Thread a;
- Thread b;
- a.Start();
- b.Start();
+ auto a = Thread::CreateWithSocketServer();
+ auto b = Thread::CreateWithSocketServer();
+ a->Start();
+ b->Start();
volatile int messages_processed = 0;
FunctorMessageHandler<void, std::function<void()>> incrementer(
@@ -173,10 +173,10 @@
});
// Post messages (both delayed and non delayed) to both threads.
- a.Post(RTC_FROM_HERE, &incrementer);
- b.Post(RTC_FROM_HERE, &incrementer);
- a.PostDelayed(RTC_FROM_HERE, 0, &incrementer);
- b.PostDelayed(RTC_FROM_HERE, 0, &incrementer);
+ a->Post(RTC_FROM_HERE, &incrementer);
+ b->Post(RTC_FROM_HERE, &incrementer);
+ a->PostDelayed(RTC_FROM_HERE, 0, &incrementer);
+ b->PostDelayed(RTC_FROM_HERE, 0, &incrementer);
rtc::Thread::Current()->Post(RTC_FROM_HERE, &event_signaler);
MessageQueueManager::ProcessAllMessageQueues();
@@ -185,9 +185,9 @@
// Test that ProcessAllMessageQueues doesn't hang if a thread is quitting.
TEST(MessageQueueManager, ProcessAllMessageQueuesWithQuittingThread) {
- Thread t;
- t.Start();
- t.Quit();
+ auto t = Thread::CreateWithSocketServer();
+ t->Start();
+ t->Quit();
MessageQueueManager::ProcessAllMessageQueues();
}
@@ -195,8 +195,8 @@
// messages.
TEST(MessageQueueManager, ProcessAllMessageQueuesWithClearedQueue) {
Event entered_process_all_message_queues(true, false);
- Thread t;
- t.Start();
+ auto t = Thread::CreateWithSocketServer();
+ t->Start();
FunctorMessageHandler<void, std::function<void()>> clearer(
[&entered_process_all_message_queues] {
@@ -213,7 +213,7 @@
});
// Post messages (both delayed and non delayed) to both threads.
- t.Post(RTC_FROM_HERE, &clearer);
+ t->Post(RTC_FROM_HERE, &clearer);
rtc::Thread::Current()->Post(RTC_FROM_HERE, &event_signaler);
MessageQueueManager::ProcessAllMessageQueues();
}
@@ -231,7 +231,7 @@
};
TEST(MessageQueueManager, ClearReentrant) {
- Thread t;
+ std::unique_ptr<Thread> t(Thread::Create());
EmptyHandler handler;
RefCountedHandler* inner_handler(
new rtc::RefCountedObject<RefCountedHandler>());
@@ -242,7 +242,7 @@
// The inner handler will be removed in a re-entrant fashion from the
// message queue of the thread while the outer handler is removed, verifying
// that the iterator is not invalidated in "MessageQueue::Clear".
- t.Post(RTC_FROM_HERE, inner_handler, 0);
- t.Post(RTC_FROM_HERE, &handler, 0,
- new ScopedRefMessageData<RefCountedHandler>(inner_handler));
+ t->Post(RTC_FROM_HERE, inner_handler, 0);
+ t->Post(RTC_FROM_HERE, &handler, 0,
+ new ScopedRefMessageData<RefCountedHandler>(inner_handler));
}