Skip to main content

UpdateContext

Struct UpdateContext 

Source
pub struct UpdateContext {
    pub slot: Option<u64>,
    pub signature: Option<String>,
    pub timestamp: Option<i64>,
    pub write_version: Option<u64>,
    pub txn_index: Option<u64>,
    pub skip_resolvers: bool,
    pub metadata: HashMap<String, Value>,
}
Expand description

Context metadata for blockchain updates (accounts and instructions) This structure is designed to be extended over time with additional metadata

Fields§

§slot: Option<u64>

Blockchain slot number

§signature: Option<String>

Transaction signature

§timestamp: Option<i64>

Unix timestamp (seconds since epoch) If not provided, will default to current system time when accessed

§write_version: Option<u64>

Write version for account updates (monotonically increasing per account within a slot) Used for staleness detection to reject out-of-order updates

§txn_index: Option<u64>

Transaction index for instruction updates (orders transactions within a slot) Used for staleness detection to reject out-of-order updates

§skip_resolvers: bool

When true, QueueResolver opcodes are skipped during handler execution. Set for reprocessed cached data from PDA mapping changes to prevent stale data from triggering resolvers or locking in wrong values via SetOnce.

§metadata: HashMap<String, Value>

Additional custom metadata that can be added without breaking changes

Implementations§

Source§

impl UpdateContext

Source

pub fn new(slot: u64, signature: String) -> Self

Create a new UpdateContext with slot and signature

Source

pub fn with_timestamp(slot: u64, signature: String, timestamp: i64) -> Self

Create a new UpdateContext with slot, signature, and timestamp

Source

pub fn new_account(slot: u64, signature: String, write_version: u64) -> Self

Create context for account updates with write_version for staleness detection

Source

pub fn new_instruction(slot: u64, signature: String, txn_index: u64) -> Self

Create context for instruction updates with txn_index for staleness detection

Source

pub fn new_reprocessed(slot: u64, write_version: u64) -> Self

Create context for reprocessed cached account data from PDA mapping changes. Uses empty signature to prevent when guards from matching stale instructions, and sets skip_resolvers to prevent stale scheduling/SetOnce lock-in.

Source

pub fn timestamp(&self) -> i64

Get the timestamp, falling back to current system time if not set

Source

pub fn empty() -> Self

Create an empty context (for testing or when context is not available)

Source

pub fn is_account_update(&self) -> bool

Add custom metadata Returns true if this is an account update context (has write_version, no txn_index)

Source

pub fn is_instruction_update(&self) -> bool

Returns true if this is an instruction update context (has txn_index, no write_version)

Source

pub fn with_metadata(self, key: String, value: Value) -> Self

Source

pub fn get_metadata(&self, key: &str) -> Option<&Value>

Get metadata value

Source

pub fn to_value(&self) -> Value

Convert context to JSON value for injection into event data

Trait Implementations§

Source§

impl Clone for UpdateContext

Source§

fn clone(&self) -> UpdateContext

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for UpdateContext

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for UpdateContext

Source§

fn default() -> UpdateContext

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> 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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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 = Infallible

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