uvco 0.1
|
Classes | |
class | uvco::Scheduler |
Enumerations | |
enum class | uvco::Scheduler::RunMode { uvco::Scheduler::RunMode::Immediate = 0 , uvco::Scheduler::RunMode::Deferred = 1 } |
Functions | |
uvco::Scheduler::Scheduler (RunMode mode=RunMode::Deferred) | |
uvco::Scheduler::Scheduler (const Scheduler &)=delete | |
uvco::Scheduler::Scheduler (Scheduler &&)=delete | |
Scheduler & | uvco::Scheduler::operator= (const Scheduler &)=delete |
Scheduler & | uvco::Scheduler::operator= (Scheduler &&)=delete |
uvco::Scheduler::~Scheduler () | |
void | uvco::Scheduler::setUpLoop (uv_loop_t *loop) |
void | uvco::Scheduler::enqueue (std::coroutine_handle<> handle) |
Schedule a coroutine for resumption. | |
void | uvco::Scheduler::runAll () |
Run all scheduled coroutines sequentially. | |
void | uvco::Scheduler::close () |
bool | uvco::Scheduler::empty () const |
Variables | |
std::vector< std::coroutine_handle<> > | uvco::Scheduler::resumableActive_ |
std::vector< std::coroutine_handle<> > | uvco::Scheduler::resumableRunning_ |
RunMode | uvco::Scheduler::run_mode_ |
|
strong |
void uvco::Scheduler::close | ( | ) |
close() should be called once the main promise has finished, and the process is preparing to exit; however, while the event loop is still running. Example: Once a user has pressed Ctrl-D in a tty application.
Otherwise, resources may be leaked. (This is usually not super important, because the event loop is finishing soon after anyway).
|
inline |
void uvco::Scheduler::enqueue | ( | std::coroutine_handle<> | handle | ) |
Schedule a coroutine for resumption.
void uvco::Scheduler::runAll | ( | ) |
Run all scheduled coroutines sequentially.
|
delete |
|
explicit |
Construct a scheduler.
If immediate_resume
is true, resumed coroutines will be run immediately in the call stack of the resuming function. Otherwise the coroutine will be resumed upon the next turn of the event loop, i.e. after all activity has finished and before the next I/O poll, by call to runAll()
.
Call setUpLoop()
to attach the scheduler to a libuv event loop.
|
delete |
void uvco::Scheduler::setUpLoop | ( | uv_loop_t * | loop | ) |
Set up scheduler with event loop. This is required for all uvco code to find the scheduler.
|
default |
|
private |
|
private |
|
private |