1 /* 2 * Copyright 2019 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 "rtc_base/task_queue.h" 11 12 #include "api/task_queue/task_queue_base.h" 13 14 namespace rtc { 15 TaskQueue(std::unique_ptr<webrtc::TaskQueueBase,webrtc::TaskQueueDeleter> task_queue)16TaskQueue::TaskQueue( 17 std::unique_ptr<webrtc::TaskQueueBase, webrtc::TaskQueueDeleter> task_queue) 18 : impl_(task_queue.release()) {} 19 ~TaskQueue()20TaskQueue::~TaskQueue() { 21 // There might running task that tries to rescheduler itself to the TaskQueue 22 // and not yet aware TaskQueue destructor is called. 23 // Calling back to TaskQueue::PostTask need impl_ pointer still be valid, so 24 // do not invalidate impl_ pointer until Delete returns. 25 impl_->Delete(); 26 } 27 IsCurrent() const28bool TaskQueue::IsCurrent() const { 29 return impl_->IsCurrent(); 30 } 31 PostTask(std::unique_ptr<webrtc::QueuedTask> task)32void TaskQueue::PostTask(std::unique_ptr<webrtc::QueuedTask> task) { 33 return impl_->PostTask(std::move(task)); 34 } 35 PostDelayedTask(std::unique_ptr<webrtc::QueuedTask> task,uint32_t milliseconds)36void TaskQueue::PostDelayedTask(std::unique_ptr<webrtc::QueuedTask> task, 37 uint32_t milliseconds) { 38 return impl_->PostDelayedTask(std::move(task), milliseconds); 39 } 40 41 } // namespace rtc 42