TransactionTracker

Struct TransactionTracker 

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

Tracks oracle responses and execution outcomes of an ongoing transaction execution, as well as replayed oracle responses.

Implementations§

Source§

impl TransactionTracker

Source

pub fn new( local_time: Timestamp, transaction_index: u32, next_application_index: u32, next_chain_index: u32, oracle_responses: Option<Vec<OracleResponse>>, blobs: &[Vec<Blob>], ) -> Self

Source

pub fn with_blobs(self, blobs: BTreeMap<BlobId, BlobContent>) -> Self

Source

pub fn local_time(&self) -> Timestamp

Source

pub fn set_local_time(&mut self, local_time: Timestamp)

Source

pub fn transaction_index(&self) -> u32

Source

pub fn next_application_index(&mut self) -> u32

Source

pub fn next_chain_index(&mut self) -> u32

Source

pub fn add_outgoing_message(&mut self, message: OutgoingMessage)

Source

pub fn add_outgoing_messages( &mut self, messages: impl IntoIterator<Item = OutgoingMessage>, )

Source

pub fn add_event(&mut self, stream_id: StreamId, index: u32, value: Vec<u8>)

Source

pub fn get_blob_content(&self, blob_id: &BlobId) -> Option<&BlobContent>

Source

pub fn add_created_blob(&mut self, blob: Blob)

Source

pub fn add_published_blob(&mut self, blob_id: BlobId)

Source

pub fn created_blobs(&self) -> &BTreeMap<BlobId, BlobContent>

Source

pub fn add_oracle_response(&mut self, oracle_response: OracleResponse)

Source

pub fn add_operation_result(&mut self, result: Option<Vec<u8>>)

Source

pub fn add_stream_to_process( &mut self, application_id: ApplicationId, chain_id: ChainId, stream_id: StreamId, previous_index: u32, next_index: u32, )

Source

pub fn remove_stream_to_process( &mut self, application_id: ApplicationId, chain_id: ChainId, stream_id: StreamId, )

Source

pub fn take_streams_to_process( &mut self, ) -> BTreeMap<ApplicationId, Vec<StreamUpdate>>

Source

pub fn replay_oracle_response( &mut self, oracle_response: OracleResponse, ) -> Result<bool, ExecutionError>

Adds the oracle response to the record. If replaying, it also checks that it matches the next replayed one and returns true.

Source

pub fn next_replayed_oracle_response( &mut self, ) -> Result<Option<OracleResponse>, ExecutionError>

If in replay mode, returns the next oracle response, or an error if it is missing.

If not in replay mode, None is returned, and the caller must execute the actual oracle to obtain the value.

In both cases, the value (returned or obtained from the oracle) must be recorded using add_oracle_response.

Source

pub fn into_outcome(self) -> Result<TransactionOutcome, ExecutionError>

Trait Implementations§

Source§

impl Debug for TransactionTracker

Source§

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

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

impl Default for TransactionTracker

Source§

fn default() -> TransactionTracker

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<Choices> CoproductSubsetter<CNil, HNil> for Choices

Source§

type Remainder = Choices

Source§

fn subset( self, ) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>

Extract a subset of the possible types in a coproduct (or get the remaining possibilities) Read more
Source§

impl<To, From> DynInto<To> for From
where From: Into<To>,

Source§

fn into_box(self: Box<From>) -> To

Converts a boxed object into the target type.
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, U, I> LiftInto<U, I> for T
where U: LiftFrom<T, I>,

Source§

fn lift_into(self) -> U

Performs the indexed conversion.
Source§

impl<M, I> RuntimeMemory<&mut I> for M
where M: RuntimeMemory<I>,

Source§

fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>

Reads length bytes from memory from the provided location.

Source§

fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>

Writes the bytes to memory at the provided location.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<Source> Sculptor<HNil, HNil> for Source

Source§

type Remainder = Source

Source§

fn sculpt(self) -> (HNil, <Source as Sculptor<HNil, HNil>>::Remainder)

Consumes the current HList and returns an HList with the requested shape. Read more
Source§

impl<AnyTail> Split<HNil> for AnyTail

Source§

type Remainder = AnyTail

The tail of remaining elements after splitting up the list.
Source§

fn split(self) -> (HNil, <AnyTail as Split<HNil>>::Remainder)

Splits the current heterogeneous list in two.
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> Post for T
where T: Send + Sync,