Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
Loading...
Searching...
No Matches
task_runner_util.h
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef FLUTTER_FML_TASK_RUNNER_UTIL_H_
6
#define FLUTTER_FML_TASK_RUNNER_UTIL_H_
7
8
#include <functional>
9
10
#include "
flutter/fml/memory/ref_ptr.h
"
11
#include "
flutter/fml/task_runner.h
"
12
13
namespace
fml
{
14
15
/// A BasicTaskRunner that posts tasks to another task runner.
16
///
17
/// This can be used to adapt an fml::RefPtr<fml::TaskRunner> to APIs that
18
/// take a BasicTaskRunner that is not managed by fml::RefPtr.
19
class
WrapperBasicTaskRunner
:
public
BasicTaskRunner
{
20
public
:
21
explicit
WrapperBasicTaskRunner
(
fml::RefPtr<fml::TaskRunner>
task_runner);
22
23
virtual
~WrapperBasicTaskRunner
() =
default
;
24
25
void
PostTask
(
const
fml::closure
& task)
override
;
26
27
private
:
28
fml::RefPtr<fml::TaskRunner>
task_runner_;
29
30
FML_DISALLOW_COPY_AND_ASSIGN
(
WrapperBasicTaskRunner
);
31
};
32
33
/// A BasicTaskRunner that wraps another task runner and takes a function
34
/// that indicates whether that task runner is still usable.
35
///
36
/// Before each posted task is run, ConditionalBasicTaskRunner will call the
37
/// is_usable function on the underlying task runner's thread. If is_usable
38
/// returns false, then the task will not be executed.
39
class
ConditionalBasicTaskRunner
:
public
BasicTaskRunner
{
40
public
:
41
explicit
ConditionalBasicTaskRunner
(
fml::RefPtr<fml::TaskRunner>
task_runner,
42
std::function<
bool
()> is_usable);
43
44
virtual
~ConditionalBasicTaskRunner
() =
default
;
45
46
void
PostTask
(
const
fml::closure
& task)
override
;
47
48
private
:
49
fml::RefPtr<fml::TaskRunner>
task_runner_;
50
const
std::shared_ptr<std::function<bool()>> is_usable_;
51
52
FML_DISALLOW_COPY_AND_ASSIGN
(
ConditionalBasicTaskRunner
);
53
};
54
55
}
// namespace fml
56
57
#endif
// FLUTTER_FML_TASK_RUNNER_UTIL_H_
fml::BasicTaskRunner
An interface over the ability to schedule tasks on a TaskRunner.
Definition
task_runner.h:20
fml::ConditionalBasicTaskRunner
Definition
task_runner_util.h:39
fml::ConditionalBasicTaskRunner::~ConditionalBasicTaskRunner
virtual ~ConditionalBasicTaskRunner()=default
fml::ConditionalBasicTaskRunner::PostTask
void PostTask(const fml::closure &task) override
Definition
task_runner_util.cc:24
fml::RefPtr
Definition
ref_ptr.h:65
fml::WrapperBasicTaskRunner
Definition
task_runner_util.h:19
fml::WrapperBasicTaskRunner::~WrapperBasicTaskRunner
virtual ~WrapperBasicTaskRunner()=default
fml::WrapperBasicTaskRunner::PostTask
void PostTask(const fml::closure &task) override
Definition
task_runner_util.cc:13
FML_DISALLOW_COPY_AND_ASSIGN
#define FML_DISALLOW_COPY_AND_ASSIGN(TypeName)
Definition
macros.h:27
task_runner.h
fml
Definition
ascii_trie.cc:9
fml::closure
std::function< void()> closure
Definition
closure.h:14
ref_ptr.h
fml
task_runner_util.h
Generated on Fri Jul 24 2026 07:12:32 for Flutter Engine Uber Docs by
1.9.8