C/C++ API Reference
Loading...
Searching...
No Matches
pw::async2::EpollDispatcher Class Referencefinal
Inheritance diagram for pw::async2::EpollDispatcher:
pw::async2::RunnableDispatcher pw::async2::Dispatcher

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)
 
WakerNativeAddReadWakerForFileDescriptor (int fd)
 
WakerNativeAddWriteWakerForFileDescriptor (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
 
Dispatcheroperator= (Dispatcher &)=delete
 
 Dispatcher (Dispatcher &&)=delete
 
Dispatcheroperator= (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 ()
 
TaskPopTaskToRun ()
 
TaskPopTaskToRun (State &result)
 
TaskPopSingleTaskForThisWake ()
 
RunTaskResult RunTask (Task &task)
 

Member Function Documentation

◆ DoWaitForWake()

void pw::async2::EpollDispatcher::DoWaitForWake ( )
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.

◆ DoWake()

void pw::async2::EpollDispatcher::DoWake ( )
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:

Note
The 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.


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