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}
This commit is contained in:
tommi
2017-07-14 14:44:46 -07:00
committed by Commit Bot
parent bc266bc867
commit e7251599a3
19 changed files with 178 additions and 153 deletions

View File

@ -38,9 +38,9 @@ class MessageQueueTest: public testing::Test, public MessageQueue {
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 @@ TEST(MessageQueueManager, Clear) {
// 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 @@ TEST(MessageQueueManager, ProcessAllMessageQueues) {
});
// 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(MessageQueueManager, ProcessAllMessageQueues) {
// 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 @@ TEST(MessageQueueManager, ProcessAllMessageQueuesWithQuittingThread) {
// 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 @@ TEST(MessageQueueManager, ProcessAllMessageQueuesWithClearedQueue) {
});
// 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 @@ class EmptyHandler : public MessageHandler {
};
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 @@ TEST(MessageQueueManager, ClearReentrant) {
// 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));
}