Skip to main content

TaskIdRegistry

Struct TaskIdRegistry 

Source
pub struct TaskIdRegistry { /* private fields */ }
Expand description

Task registry for managing task metadata

Implementations§

Source§

impl TaskIdRegistry

Source

pub fn task_stats_from_events( events: &[MemoryEvent], ) -> BTreeMap<u64, TaskLedgerStats>

Aggregate a fixed event cut by binding identity and allocating task.

Live bytes stay with the origin task; allocation/release activity belongs to the task performing the operation. Unattributed bindings are still indexed so a later task can release them without consuming another generation.

Source

pub fn task_accounting_from_events( events: &[MemoryEvent], ) -> TaskAccountingSnapshot

Replay metrics and lifecycle gaps together, preserving cross-task ownership.

Source§

impl TaskIdRegistry

Source

pub fn charge_quality_from_events( events: &[MemoryEvent], ) -> (ChargeQuality, BTreeMap<u64, ChargeQuality>)

Project window and per-task charge quality from one immutable event cut.

Reallocations and annotations do not make another registry charge attempt. Legacy allocation events without an outcome remain readable, but cannot certify completeness.

Source§

impl TaskIdRegistry

Source

pub fn new() -> Self

Create new task registry

Source

pub fn task_scope(&self, name: &str) -> TaskGuard

Create a task scope with automatic lifecycle management

This is the simplified API - just call this and the task is automatically completed when the guard is dropped.

§Arguments
  • name - Task name
§Returns

A TaskGuard that automatically completes the task when dropped

§Example
let registry = global_registry();

{
    let _main = registry.task_scope("main_process");
    let data = vec![1, 2, 3]; // Automatically attributed to main_process

    {
        let _worker = registry.task_scope("worker"); // Parent is automatically main_process
        let more_data = vec![4, 5, 6]; // Automatically attributed to worker
    } // worker automatically completed
} // main automatically completed

let graph = registry.export_graph();
Source

pub fn register_explicit_task(&self, task_id: u64, name: &str)

Register an explicitly-tracked task.

The parent is inferred from the current thread-local task, and CURRENT_TASK_ID is set so that subsequent track! calls on the same thread are attributed to this task. This preserves the original contract for existing callers that rely on “register then track” semantics.

§Arguments
  • task_id - Externally-generated task ID
  • name - Task name
Source

pub fn register_explicit_task_with_parent( &self, task_id: u64, name: &str, parent_id: Option<u64>, )

Register an explicitly-tracked task with a known parent ID.

Unlike [register_explicit_task], this method does NOT read or write CURRENT_TASK_ID. The caller provides the parent ID directly (which should be captured at spawn time, not at first-poll time). The poll-level wrapper (ContextualFuture) handles context installation.

§Arguments
  • task_id - Externally-generated task ID
  • name - Task name
  • parent_id - Parent task ID (None for root tasks)
Source

pub fn unregister_task(&self, task_id: u64)

Mark a registered task as completed.

The thread-local slot is only cleared when it still holds this task: another task (or a parent scope) may be current on this thread.

Source

pub fn record_allocation(&self, size: usize)

Record a memory allocation for the current task

§Arguments
  • size - Size of the allocation in bytes
Source

pub fn try_record_allocation(&self, size: usize) -> ChargeOutcome

Charge an allocation without ever blocking on the registry lock.

The global allocator callback runs while other code may hold the registry read lock (and allocate inside it). Taking the write lock there self-deadlocks, so this uses try_write and reports ChargeOutcome::Deferred instead of waiting; the attempt and its bytes are counted so a report can mark the task metrics as a lower bound of this capture window.

Source

pub fn deferred_tasks(&self) -> HashMap<u64, (u64, u64)>

Per-task deferred charges: task_id -> (count, bytes).

A task present here has accounting that is a lower bound for this capture window.

Source

pub fn charge_quality(&self) -> ChargeQuality

Completeness of the task accounting observed so far.

Source

pub fn current_task_id() -> Option<u64>

Source

pub fn set_current_task_id(&self, task_id: u64)

Set the current task ID on the calling thread’s TLS. Used by the poll-level wrapper to install the task context for each poll() invocation.

Source

pub fn set_current_task_id_opt(&self, task_id: Option<u64>)

Set or clear the current task ID on the calling thread’s TLS. Used by the poll-level wrapper to restore the previous value after a poll() returns.

Source

pub fn clear(&self)

Clear all tasks (for testing purposes)

Source

pub fn get_task(&self, task_id: u64) -> Option<TaskMeta>

Get task metadata by ID

§Arguments
  • task_id - Task ID
§Returns

Task metadata if found

Source

pub fn get_all_tasks(&self) -> Vec<TaskMeta>

Get all tasks

Source

pub fn get_children(&self, parent_id: u64) -> Vec<u64>

Get task children

§Arguments
  • parent_id - Parent task ID
§Returns

List of child task IDs

Source

pub fn get_parent(&self, task_id: u64) -> Option<u64>

Get task parent

§Arguments
  • task_id - Task ID
§Returns

Parent task ID if found

Source

pub fn export_graph(&self) -> TaskGraph

Export task graph as JSON

§Returns

TaskGraph containing all tasks and their relationships

Source

pub fn get_stats(&self) -> TaskRegistryStats

Get task statistics

Trait Implementations§

Source§

impl Default for TaskIdRegistry

Source§

fn default() -> Self

Returns the “default value” for a type. 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more