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
impl TransactionTracker
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
pub fn with_blobs(self, blobs: BTreeMap<BlobId, BlobContent>) -> Self
pub fn local_time(&self) -> Timestamp
pub fn set_local_time(&mut self, local_time: Timestamp)
pub fn transaction_index(&self) -> u32
pub fn next_application_index(&mut self) -> u32
pub fn next_chain_index(&mut self) -> u32
pub fn add_outgoing_message(&mut self, message: OutgoingMessage)
pub fn add_outgoing_messages( &mut self, messages: impl IntoIterator<Item = OutgoingMessage>, )
pub fn add_event(&mut self, stream_id: StreamId, index: u32, value: Vec<u8>)
pub fn get_blob_content(&self, blob_id: &BlobId) -> Option<&BlobContent>
pub fn add_created_blob(&mut self, blob: Blob)
pub fn add_published_blob(&mut self, blob_id: BlobId)
pub fn created_blobs(&self) -> &BTreeMap<BlobId, BlobContent>
pub fn add_operation_result(&mut self, result: Option<Vec<u8>>)
Sourcepub async fn oracle<F, G>(
&mut self,
f: F,
) -> Result<&OracleResponse, ExecutionError>
pub async fn oracle<F, G>( &mut self, f: F, ) -> Result<&OracleResponse, ExecutionError>
In replay mode, returns the next recorded oracle response. Otherwise executes f
and
records and returns the result. f
is the implementation of the actual oracle and is
only called in validation mode, so it does not have to be fully deterministic.
pub fn add_stream_to_process( &mut self, application_id: ApplicationId, chain_id: ChainId, stream_id: StreamId, previous_index: u32, next_index: u32, )
pub fn remove_stream_to_process( &mut self, application_id: ApplicationId, chain_id: ChainId, stream_id: StreamId, )
pub fn take_streams_to_process( &mut self, ) -> BTreeMap<ApplicationId, Vec<StreamUpdate>>
Sourcepub fn replay_oracle_response(
&mut self,
oracle_response: OracleResponse,
) -> Result<bool, ExecutionError>
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
.
pub fn into_outcome(self) -> Result<TransactionOutcome, ExecutionError>
Trait Implementations§
Source§impl Debug for TransactionTracker
impl Debug for TransactionTracker
Source§impl Default for TransactionTracker
impl Default for TransactionTracker
Source§fn default() -> TransactionTracker
fn default() -> TransactionTracker
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for TransactionTracker
impl RefUnwindSafe for TransactionTracker
impl Send for TransactionTracker
impl Sync for TransactionTracker
impl Unpin for TransactionTracker
impl UnwindSafe for TransactionTracker
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
Source§fn read<'instance>(
&self,
instance: &'instance &mut I,
location: GuestPointer,
length: u32,
) -> Result<Cow<'instance, [u8]>, RuntimeError>
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>
fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>
Writes the bytes
to memory at the provided location
.