Skip to main content

TaskCallbacks

Struct TaskCallbacks 

Source
pub struct TaskCallbacks {
    pub before: fn() -> Option<*const ()>,
    pub enter: fn(*const ()) -> *const (),
    pub exit: fn(*const ()),
    pub after: fn(*const ()),
}
Expand description

Callbacks for instrumenting spawned tasks.

Configure a factory returning them with Builder::task_callbacks or the task_callbacks argument of #[ntex::main] and #[ntex::test]. The factory is called once on every thread of the system, when the thread joins it. They apply when crate::spawn, crate::spawn_detached, spawn_sendable, crate::rt::spawn, or crate::rt::spawn_detached wraps a future on a thread of the configured system, including its arbiters. They do not apply retroactively, to direct crate::rt::Runtime spawning methods, or on threads without a system.

  • before runs synchronously when the future is wrapped. Returning None disables the remaining callbacks for that future.
  • enter receives the task’s pointer before each poll and returns a pointer representing the previous context.
  • exit receives that previous-context pointer after the poll, including when polling unwinds.
  • after receives the task’s original pointer when its callback state is dropped, including cancellation before the first poll.

Pointers are opaque to the runtime, which never dereferences them. Keep the state returned by before valid until after, and the state returned by enter valid until its matching exit. Callbacks of a thread run only on that thread and may be called while other tasks are spawned.

Fields§

§before: fn() -> Option<*const ()>

Called when a future is wrapped, returns the task’s pointer.

§enter: fn(*const ()) -> *const ()

Called before each poll, returns the previous context.

§exit: fn(*const ())

Called after each poll with the value returned by enter.

§after: fn(*const ())

Called once with the task’s pointer when its callback state is dropped.

Trait Implementations§

Source§

impl Clone for TaskCallbacks

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for TaskCallbacks

Source§

impl Debug for TaskCallbacks

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.