Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
fml::ConditionalBasicTaskRunner Class Reference

#include <task_runner_util.h>

Inheritance diagram for fml::ConditionalBasicTaskRunner:
fml::BasicTaskRunner

Public Member Functions

 ConditionalBasicTaskRunner (fml::RefPtr< fml::TaskRunner > task_runner, std::function< bool()> is_usable)
 
virtual ~ConditionalBasicTaskRunner ()=default
 
void PostTask (const fml::closure &task) override
 

Detailed Description

A BasicTaskRunner that wraps another task runner and takes a function that indicates whether that task runner is still usable.

Before each posted task is run, ConditionalBasicTaskRunner will call the is_usable function on the underlying task runner's thread. If is_usable returns false, then the task will not be executed.

Definition at line 39 of file task_runner_util.h.

Constructor & Destructor Documentation

◆ ConditionalBasicTaskRunner()

fml::ConditionalBasicTaskRunner::ConditionalBasicTaskRunner ( fml::RefPtr< fml::TaskRunner task_runner,
std::function< bool()>  is_usable 
)
explicit

Definition at line 17 of file task_runner_util.cc.

20 : task_runner_(std::move(task_runner)),
21 is_usable_(
22 std::make_shared<std::function<bool()>>(std::move(is_usable))) {}

References function.

◆ ~ConditionalBasicTaskRunner()

virtual fml::ConditionalBasicTaskRunner::~ConditionalBasicTaskRunner ( )
virtualdefault

Member Function Documentation

◆ PostTask()

void fml::ConditionalBasicTaskRunner::PostTask ( const fml::closure task)
overridevirtual

Schedules task to be executed on the TaskRunner's associated event loop.

Implements fml::BasicTaskRunner.

Definition at line 24 of file task_runner_util.cc.

24 {
25 auto task_wrapper = [task, weak_is_usable = std::weak_ptr(is_usable_)] {
26 std::shared_ptr<std::function<bool()>> is_usable = weak_is_usable.lock();
27 if (is_usable && (*is_usable)()) {
28 task();
29 }
30 };
31 task_runner_->PostTask(task_wrapper);
32}
virtual void PostTask(const fml::closure &task) override

References fml::TaskRunner::PostTask().

Referenced by fml::testing::TEST().


The documentation for this class was generated from the following files: