Struct hyper::ffi::hyper_executor
source · pub struct hyper_executor { /* private fields */ }
ffi
and hyper_unstable_ffi
only.Expand description
A task executor for hyper_task
s.
A task is a unit of work that may be blocked on IO, and can be polled to make progress on that work.
An executor can hold many tasks, included from unrelated HTTP connections. An executor is single threaded. Typically you might have one executor per thread. Or, for simplicity, you may choose one executor per connection.
Progress on tasks happens only when hyper_executor_poll
is called, and only
on tasks whose corresponding hyper_waker
has been called to indicate they
are ready to make progress (for instance, because the OS has indicated there
is more data to read or more buffer space available to write).
Deadlock potential: hyper_executor_poll
must not be called from within a task’s
callback. Doing so will result in a deadlock.
Methods:
- hyper_executor_new: Creates a new task executor.
- hyper_executor_push: Push a task onto the executor.
- hyper_executor_poll: Polls the executor, trying to make progress on any tasks that have notified that they are ready again.
- hyper_executor_free: Frees an executor and any incomplete tasks still part of it.