blob: fd2eb324fa54272ae3361cd3e54e4097118da7e6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_PUBLIC_TASK_RUNNER_H_
#define CHROMECAST_PUBLIC_TASK_RUNNER_H_
#include <stdint.h>
namespace chromecast {
// Provides a way for vendor libraries to run code on a specific thread.
// For example, cast_shell supplies an implementation of this interface through
// media APIs (see MediaPipelineDeviceParams) to allow media backends to
// schedule tasks to be run on the media thread.
class TaskRunner {
public:
// Subclass and implement 'Run' to supply code to be run by PostTask or
// PostDelayedTask. They both take ownership of the Task object passed in
// and will delete after running the Task.
class Task {
public:
virtual ~Task() {}
virtual void Run() = 0;
};
// Posts a task to the thread's task queue. Delay of 0 could mean task
// runs immediately (within the call to PostTask, if it's called on the
// target thread) but there also could be some delay (the task could be added
// to target thread's task queue).
virtual bool PostTask(Task* task, uint64_t delay_milliseconds) = 0;
protected:
virtual ~TaskRunner() {}
};
} // namespace chromecast
#endif // CHROMECAST_PUBLIC_TASK_RUNNER_H_
|