Skip to main content

ActivityContext

Struct ActivityContext 

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

Handler-facing context for one activity execution.

Implementations§

Source§

impl ActivityContext

Source

pub fn new( workflow_id: WorkflowId, run_id: RunId, activity_id: ActivityId, attempt: u32, ) -> (Self, ActivityCancellationHandle)

Creates a context and the internal handle that can signal cancellation.

The full dispatch identity is required: an activity execution always belongs to one (workflow, run, activity, attempt), and a handler reads the workflow and run back to stamp the transcript events it emits.

Source

pub fn with_transcript( workflow_id: WorkflowId, run_id: RunId, activity_id: ActivityId, attempt: u32, events: UnboundedSender<ActivityEvent>, ) -> (Self, ActivityCancellationHandle)

Creates a context whose transcript seam is live, for a host that owns the receiving end of events.

This is the seam Self::emit_event publishes on: every event a handler emits carries this context’s (workflow_id, run_id, activity_id, attempt) identity, which is exactly the key the server’s transcript sequencer files it under. A host that executes an activity IN PROCESS (the server’s declared-command path) uses this to hand its own publisher the same stream a remote worker’s drain would have delivered.

Source

pub const fn activity_id(&self) -> &ActivityId

Returns this activity’s identifier.

Source

pub const fn workflow_id(&self) -> &WorkflowId

Returns the workflow this activity belongs to.

Source

pub const fn attempt(&self) -> u32

Returns this activity’s attempt number.

Source

pub const fn run_id(&self) -> &RunId

Returns the concrete run this activity was dispatched by.

A handler that emits transcript events through Self::emit_event stamps this onto every ActivityEvent it builds: the transcript keyspace is keyed on (workflow, run, activity, attempt), and without the run two generations of one continue-as-new chain write to the same stream. Always present — the run is part of the dispatch identity, so the handler is never handed an absence it cannot resolve.

Source

pub fn idempotency_key(&self) -> Option<&str>

Returns the stable external-effect key delivered with this task.

Live worker tasks always return Some; manually constructed unit-test contexts return None because they are not attached to a server task.

Source

pub fn heartbeat(&self, detail: Option<Payload>) -> Result<(), WorkerError>

Emits a cooperative heartbeat request for this activity.

This is the PROGRESS channel: handlers call it to attach a progress payload to the activity’s liveness record. LIVENESS itself is owned by the worker runtime, which automatically heartbeats every in-flight activity within the server-assigned heartbeat window — a handler that never calls this still stays live for as long as it genuinely runs. Contexts created without a live heartbeat sender remain no-op contexts for isolated unit tests.

§Errors

Returns WorkerError when an installed heartbeat seam has been closed.

Source

pub fn emit_event(&self, event: ActivityEvent) -> Result<(), WorkerError>

Emit a neutral agent-observability ActivityEvent onto the transcript seam (NOI-5b).

Additive and OPTIONAL: on a context created without a live event seam (every isolated unit test, and every activity that does not run an instrumented agent) this is a no-op returning Ok(()), so behaviour is byte-identical to today. When a seam is installed the worker runtime drains these events and forwards them to the server’s transcript sequencer, which stamps the commit-allocated store_seq — the producer never assigns it.

Harness-neutral: the payload is a pure aion-core ActivityEvent; the per-harness mapping lives in the worker-side adapter, never here.

§Errors

Returns WorkerError when an installed event seam has been closed (the runtime drain end was dropped) — a dropped transcript event is surfaced, never silently swallowed.

Source

pub fn is_cancelled(&self) -> bool

Returns true once cooperative cancellation has been signalled.

Source

pub async fn cancelled(&self)

Resolves when cooperative cancellation is signalled.

Trait Implementations§

Source§

impl Clone for ActivityContext

Source§

fn clone(&self) -> ActivityContext

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 Debug for ActivityContext

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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, <T as TryFrom<U>>::Error>

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