Public Types | |
| enum | FileDescriptorType { kReadable = 1 << 0 , kWritable = 1 << 1 , kReadWrite = kReadable | kWritable } |
Public Member Functions | |
| Status | NativeInit () |
| Status | NativeRegisterFileDescriptor (int fd, FileDescriptorType type) |
| Status | NativeUnregisterFileDescriptor (int fd) |
| Waker & | NativeAddReadWakerForFileDescriptor (int fd) |
| Waker & | NativeAddWriteWakerForFileDescriptor (int fd) |
Public Member Functions inherited from pw::async2::RunnableDispatcher | |
| bool | RunUntilStalled () |
| void | RunToCompletion () |
| void | RunForever () |
Public Member Functions inherited from pw::async2::Dispatcher | |
| Dispatcher (Dispatcher &)=delete | |
| Dispatcher & | operator= (Dispatcher &)=delete |
| Dispatcher (Dispatcher &&)=delete | |
| Dispatcher & | operator= (Dispatcher &&)=delete |
| void | Post (Task &task) |
| void | LogRegisteredTasks () |
Private Member Functions | |
| void | DoWake () override |
| void | DoWaitForWake () override |
Friends | |
| class | ::pw::async2::Dispatcher |
Additional Inherited Members | |
Protected Types inherited from pw::async2::Dispatcher | |
| enum class | State { kNoTasks , kNoReadyTasks , kReadyTasks } |
Current state of the Dispatcher's tasks. More... | |
| enum | RunTaskResult { kActive = Task::kActive , kDeregistered = Task::kDeregistered , kCompleted = Task::kCompleted } |
Protected Member Functions inherited from pw::async2::Dispatcher | |
| bool | PopAndRunAllReadyTasks () |
| Task * | PopTaskToRun () |
| Task * | PopTaskToRun (State &result) |
| Task * | PopSingleTaskForThisWake () |
| RunTaskResult | RunTask (Task &task) |
|
overrideprivatevirtual |
Blocks until DoWake() is called. Must return immediately if DoWake() was already called since the last DoWaitForWake call.
If the implementation is unable to block the thread, it must crash.
Implements pw::async2::RunnableDispatcher.
|
overrideprivatevirtual |
Sends a wakeup signal to this Dispatcher.
This method's implementation must ensure that the Dispatcher runs at some point in the future.
DoWake() will only be called once until one of the following occurs:
PopAndRunAllReadyTasks() is called,PopTaskToRun() returns nullptr, orPopSingleTaskForThisWake() is called.internal::lock() may or may not be held here, so it must not be acquired by DoWake, nor may DoWake assume that it has been acquired. Implements pw::async2::Dispatcher.