Starts an handle polling operation. More...
#include <Async.h>
Public Types | |
using | CompletionData = AsyncCompletionData |
using | Result = AsyncResultOf<AsyncFilePoll, CompletionData> |
![]() | |
enum class | Type : uint8_t { LoopTimeout , LoopWakeUp , LoopWork , ProcessExit , SocketAccept , SocketConnect , SocketSend , SocketReceive , SocketClose , FileRead , FileWrite , FileClose , FilePoll } |
Type of async request. More... | |
Public Member Functions | |
SC::Result | start (AsyncEventLoop &eventLoop, FileDescriptor::Handle fileDescriptor) |
Starts a file descriptor poll operation, monitoring its readiness with appropriate OS API. | |
![]() | |
void | setDebugName (const char *newDebugName) |
void | executeOn (AsyncSequence &sequence) |
Adds the request to be executed on a specific AsyncSequence. | |
Result | executeOn (AsyncTaskSequence &task, ThreadPool &pool) |
Adds the request to be executed on a specific AsyncTaskSequence. | |
void | disableThreadPool () |
Disables the thread-pool usage for this request. | |
AsyncRequest (Type type) | |
Constructs a free async request of given type. | |
Result | stop (AsyncEventLoop &eventLoop, Function< void(AsyncResult &)> *afterStopped=nullptr) |
Ask to stop current async operation. | |
bool | isFree () const |
Returns true if this request is free. | |
bool | isCancelling () const |
Returns true if this request is being cancelled. | |
bool | isActive () const |
Returns true if this request is active or being reactivated. | |
Type | getType () const |
Returns request type. | |
Result | start (AsyncEventLoop &eventLoop) |
Shortcut for AsyncEventLoop::start. | |
void | setUserFlags (uint16_t externalFlags) |
Sets user flags, holding some meaningful data for the caller. | |
uint16_t | getUserFlags () const |
Gets user flags, holding some meaningful data for the caller. | |
Function< void(AsyncResult &)> * | getCloseCallback () |
Returns currently set close callback (if any) passed to AsyncRequest::stop. | |
const Function< void(AsyncResult &)> * | getCloseCallback () const |
Public Attributes | |
Function< void(Result &)> | callback |
![]() | |
AsyncRequest * | next = nullptr |
AsyncRequest * | prev = nullptr |
Friends | |
struct | AsyncEventLoop |
Additional Inherited Members | |
![]() | |
Result | checkState () |
void | queueSubmission (AsyncEventLoop &eventLoop) |
AsyncTaskSequence * | getTask () |
![]() | |
AsyncSequence * | sequence = nullptr |
Starts an handle polling operation.
Uses GetOverlappedResult
(windows), kevent
(macOS), epoll
(Linux) and io_uring
(Linux). Callback will be called when any of the three API signals readiness events on the given file descriptor. Check File System Watcher for an example usage of this notification.
SC::Result SC::AsyncFilePoll::start | ( | AsyncEventLoop & | eventLoop, |
FileDescriptor::Handle | fileDescriptor ) |
Starts a file descriptor poll operation, monitoring its readiness with appropriate OS API.