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_oracle_response(&mut self, oracle_response: OracleResponse)
pub fn add_operation_result(&mut self, result: Option<Vec<u8>>)
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.
Sourcepub fn next_replayed_oracle_response(
&mut self,
) -> Result<Option<OracleResponse>, ExecutionError>
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.
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.