1 /* 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 #include "test/run_loop.h" 11 12 #include "rtc_base/task_utils/to_queued_task.h" 13 14 namespace webrtc { 15 namespace test { 16 RunLoop()17RunLoop::RunLoop() { 18 worker_thread_.WrapCurrent(); 19 } 20 ~RunLoop()21RunLoop::~RunLoop() { 22 worker_thread_.UnwrapCurrent(); 23 } 24 task_queue()25TaskQueueBase* RunLoop::task_queue() { 26 return &worker_thread_; 27 } 28 Run()29void RunLoop::Run() { 30 worker_thread_.ProcessMessages(WorkerThread::kForever); 31 } 32 Quit()33void RunLoop::Quit() { 34 socket_server_.FailNextWait(); 35 } 36 Flush()37void RunLoop::Flush() { 38 worker_thread_.PostTask( 39 ToQueuedTask([this]() { socket_server_.FailNextWait(); })); 40 worker_thread_.ProcessMessages(1000); 41 } 42 43 RunLoop::FakeSocketServer::FakeSocketServer() = default; 44 RunLoop::FakeSocketServer::~FakeSocketServer() = default; 45 FailNextWait()46void RunLoop::FakeSocketServer::FailNextWait() { 47 fail_next_wait_ = true; 48 } 49 Wait(int cms,bool process_io)50bool RunLoop::FakeSocketServer::Wait(int cms, bool process_io) { 51 if (fail_next_wait_) { 52 fail_next_wait_ = false; 53 return false; 54 } 55 return true; 56 } 57 WakeUp()58void RunLoop::FakeSocketServer::WakeUp() {} 59 CreateSocket(int family,int type)60rtc::Socket* RunLoop::FakeSocketServer::CreateSocket(int family, int type) { 61 return nullptr; 62 } 63 CreateAsyncSocket(int family,int type)64rtc::AsyncSocket* RunLoop::FakeSocketServer::CreateAsyncSocket(int family, 65 int type) { 66 return nullptr; 67 } 68 WorkerThread(rtc::SocketServer * ss)69RunLoop::WorkerThread::WorkerThread(rtc::SocketServer* ss) 70 : rtc::Thread(ss), tq_setter_(this) {} 71 72 } // namespace test 73 } // namespace webrtc 74