| /* |
| * Copyright 2018 The WebRTC Project Authors. All rights reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| #ifndef API_TASK_QUEUE_QUEUED_TASK_H_ |
| #define API_TASK_QUEUE_QUEUED_TASK_H_ |
| |
| namespace webrtc { |
| |
| // Base interface for asynchronously executed tasks. |
| // The interface basically consists of a single function, Run(), that executes |
| // on the target queue. For more details see the Run() method and TaskQueue. |
| class QueuedTask { |
| public: |
| virtual ~QueuedTask() = default; |
| |
| // Main routine that will run when the task is executed on the desired queue. |
| // The task should return `true` to indicate that it should be deleted or |
| // `false` to indicate that the queue should consider ownership of the task |
| // having been transferred. Returning `false` can be useful if a task has |
| // re-posted itself to a different queue or is otherwise being re-used. |
| virtual bool Run() = 0; |
| }; |
| |
| } // namespace webrtc |
| |
| #endif // API_TASK_QUEUE_QUEUED_TASK_H_ |