Flutter Engine
 
Loading...
Searching...
No Matches
fml::MessageLoop Class Reference

#include <message_loop.h>

Public Member Functions

void Run ()
 
void Terminate ()
 
void AddTaskObserver (intptr_t key, const fml::closure &callback)
 
void RemoveTaskObserver (intptr_t key)
 
fml::RefPtr< fml::TaskRunnerGetTaskRunner () const
 
void RunExpiredTasksNow ()
 
 ~MessageLoop ()
 

Static Public Member Functions

static FML_EMBEDDER_ONLY MessageLoopGetCurrent ()
 
static void EnsureInitializedForCurrentThread ()
 
static bool IsInitializedForCurrentThread ()
 
static TaskQueueId GetCurrentTaskQueueId ()
 

Friends

class TaskRunner
 
class MessageLoopImpl
 

Detailed Description

An event loop associated with a thread.

This class is the generic front-end to the MessageLoop, differences in implementation based on the running platform are in the subclasses of flutter::MessageLoopImpl (ex flutter::MessageLoopAndroid).

For scheduling events on the message loop see flutter::TaskRunner.

See also
fml::TaskRunner
fml::MessageLoopImpl
fml::MessageLoopTaskQueues
fml::Wakeable

Definition at line 28 of file message_loop.h.

Constructor & Destructor Documentation

◆ ~MessageLoop()

fml::MessageLoop::~MessageLoop ( )
default

Member Function Documentation

◆ AddTaskObserver()

void fml::MessageLoop::AddTaskObserver ( intptr_t  key,
const fml::closure callback 
)

Definition at line 64 of file message_loop.cc.

64 {
65 loop_->AddTaskObserver(key, callback);
66}
FlutterDesktopBinaryReply callback

References callback, and key.

Referenced by FlutterEngineInitialize(), and flutter::RunTester().

◆ EnsureInitializedForCurrentThread()

◆ GetCurrent()

MessageLoop & fml::MessageLoop::GetCurrent ( )
static

Definition at line 19 of file message_loop.cc.

19 {
20 auto* loop = tls_message_loop.get();
21 FML_CHECK(loop != nullptr)
22 << "MessageLoop::EnsureInitializedForCurrentThread was not called on "
23 "this thread prior to message loop use.";
24 return *loop;
25}
#define FML_CHECK(condition)
Definition logging.h:104

References FML_CHECK, and fml::tls_message_loop.

Referenced by __FlutterEngineFlushPendingTasksNow(), fml::MessageLoopImpl::AddTaskObserver(), flutter::AndroidShellHolder::AndroidShellHolder(), flutter::ScriptCompletionTaskObserver::DidProcessTask(), FlutterEngineInitialize(), FLUTTER_ASSERT_ARC::GetCurrentTaskRunner(), flutter::GetCurrentThreadTaskRunner(), flutter::testing::GetTaskRunnersForFixture(), fml::Thread::Join(), main(), fml::MessageLoopImpl::RemoveTaskObserver(), impeller::testing::RendererDartTest::RendererDartTest(), flutter::RunTester(), fml::testing::TaskQueueWrapper::TaskQueueWrapper(), flutter::testing::android::TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), flutter::TEST(), flutter::TEST(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), flutter_runner::TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), flutter::testing::TEST_F(), and fml::Thread::Thread().

◆ GetCurrentTaskQueueId()

TaskQueueId fml::MessageLoop::GetCurrentTaskQueueId ( )
static

Gets the unique identifier for the TaskQueue associated with the current thread.

See also
fml::MessageLoopTaskQueues

Definition at line 76 of file message_loop.cc.

76 {
77 auto* loop = tls_message_loop.get();
78 FML_CHECK(loop != nullptr)
79 << "MessageLoop::EnsureInitializedForCurrentThread was not called on "
80 "this thread prior to message loop use.";
81 return loop->GetLoopImpl()->GetTaskQueueId();
82}

References FML_CHECK, and fml::tls_message_loop.

Referenced by flutter::testing::ShellTest::CreateSettingsForFixture(), FlutterDartProject::defaultBundleIdentifier, flutter::testing::GetThreadMergerFromPlatformThread(), flutter::testing::GetThreadMergerFromRasterThread(), fml::RasterThreadMerger::IsOnPlatformThread(), main(), fml::TaskRunnerChecker::RunsOnCreationTaskRunner(), fml::TaskRunner::RunsTasksOnCurrentThread(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), and flutter::testing::TestSkObject::~TestSkObject().

◆ GetTaskRunner()

◆ IsInitializedForCurrentThread()

bool fml::MessageLoop::IsInitializedForCurrentThread ( )
static

Returns true if EnsureInitializedForCurrentThread has been called on this thread already.

Definition at line 35 of file message_loop.cc.

35 {
36 return tls_message_loop.get() != nullptr;
37}

References fml::tls_message_loop.

Referenced by fml::TaskRunnerChecker::RunsOnCreationTaskRunner(), and fml::TaskRunner::RunsTasksOnCurrentThread().

◆ RemoveTaskObserver()

void fml::MessageLoop::RemoveTaskObserver ( intptr_t  key)

Definition at line 68 of file message_loop.cc.

68 {
69 loop_->RemoveTaskObserver(key);
70}

References key.

Referenced by FlutterEngineInitialize(), and flutter::RunTester().

◆ Run()

void fml::MessageLoop::Run ( )

Definition at line 48 of file message_loop.cc.

48 {
49 loop_->DoRun();
50}

Referenced by main(), flutter::RunTester(), fml::testing::TEST(), fml::testing::TEST(), fml::testing::TEST(), and fml::testing::TEST().

◆ RunExpiredTasksNow()

◆ Terminate()

void fml::MessageLoop::Terminate ( )

Friends And Related Symbol Documentation

◆ MessageLoopImpl

friend class MessageLoopImpl
friend

Definition at line 62 of file message_loop.h.

◆ TaskRunner

friend class TaskRunner
friend

Definition at line 61 of file message_loop.h.


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