pub struct CallFrame<C, L> { /* private fields */ }
Expand description
A call frame is the basic unit that forms a transaction call stack, which keeps track of the owned objects and references by this function.
Implementations§
Source§impl<C, L> CallFrame<C, L>where
L: Clone,
impl<C, L> CallFrame<C, L>where
L: Clone,
pub fn new_root(init: CallFrameInit<C>) -> CallFrame<C, L>
pub fn new_child_from_parent<S>(
substate_io: &SubstateIO<'_, S>,
parent: &mut CallFrame<C, L>,
call_frame_data: C,
message: CallFrameMessage,
) -> Result<CallFrame<C, L>, CreateFrameError>where
S: CommitableSubstateStore,
pub fn pass_message<S>(
substate_io: &SubstateIO<'_, S>,
from: &mut CallFrame<C, L>,
to: &mut CallFrame<C, L>,
message: CallFrameMessage,
) -> Result<(), PassMessageError>where
S: CommitableSubstateStore,
pub fn stack_id(&self) -> usize
pub fn depth(&self) -> usize
pub fn data(&self) -> &C
pub fn data_mut(&mut self) -> &mut C
pub fn pin_node<'f, S>(
&mut self,
substate_io: &mut SubstateIO<'_, S>,
node_id: NodeId,
) -> Result<(), PinNodeError>where
S: CommitableSubstateStore,
pub fn mark_substate_as_transient<'f, S>(
&mut self,
substate_io: &mut SubstateIO<'_, S>,
node_id: NodeId,
partition_num: PartitionNumber,
substate_key: SubstateKey,
) -> Result<(), MarkTransientSubstateError>where
S: CommitableSubstateStore,
pub fn create_node<'f, S, E>(
&mut self,
substate_io: &mut SubstateIO<'_, S>,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
node_id: NodeId,
node_substates: BTreeMap<PartitionNumber, BTreeMap<SubstateKey, IndexedScryptoValue>>,
) -> Result<(), CallbackError<CreateNodeError, E>>where
S: CommitableSubstateStore,
Sourcepub fn drop_node<E, S>(
&mut self,
substate_io: &mut SubstateIO<'_, S>,
node_id: &NodeId,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
) -> Result<DroppedNode, CallbackError<DropNodeError, E>>where
S: CommitableSubstateStore,
pub fn drop_node<E, S>(
&mut self,
substate_io: &mut SubstateIO<'_, S>,
node_id: &NodeId,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
) -> Result<DroppedNode, CallbackError<DropNodeError, E>>where
S: CommitableSubstateStore,
Removes node from call frame and owned nodes will be possessed by this call frame.
pub fn move_partition<'f, S, E>(
&mut self,
substate_io: &'f mut SubstateIO<'_, S>,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
src_node_id: &NodeId,
src_partition_number: PartitionNumber,
dest_node_id: &NodeId,
dest_partition_number: PartitionNumber,
) -> Result<(), CallbackError<MovePartitionError, E>>where
S: CommitableSubstateStore,
pub fn open_substate<S, E, F>( &mut self, substate_io: &mut SubstateIO<'_, S>, node_id: &NodeId, partition_num: PartitionNumber, substate_key: &SubstateKey, flags: LockFlags, default: Option<F>, data: L, handler: &mut impl CallFrameIOAccessHandler<C, L, E>, ) -> Result<(u32, usize), CallbackError<OpenSubstateError, E>>
pub fn read_substate<'f, S, H>(
&mut self,
substate_io: &'f mut SubstateIO<'_, S>,
lock_handle: u32,
handler: &mut H,
) -> Result<&'f IndexedScryptoValue, CallbackError<ReadSubstateError, <H as CallFrameSubstateReadHandler<C, L>>::Error>>where
S: CommitableSubstateStore,
H: CallFrameSubstateReadHandler<C, L>,
pub fn write_substate<'f, S, E>(
&mut self,
substate_io: &'f mut SubstateIO<'_, S>,
lock_handle: u32,
substate: IndexedScryptoValue,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
) -> Result<(), CallbackError<WriteSubstateError, E>>where
S: CommitableSubstateStore,
pub fn close_substate<S>(
&mut self,
substate_io: &mut SubstateIO<'_, S>,
lock_handle: u32,
) -> Result<(), CloseSubstateError>where
S: CommitableSubstateStore,
pub fn open_substates(&self) -> Vec<u32>
pub fn close_all_substates<S>(&mut self, substate_io: &mut SubstateIO<'_, S>)where
S: CommitableSubstateStore,
pub fn get_handle_info(&self, lock_handle: u32) -> Option<L>
pub fn add_global_reference(&mut self, address: GlobalAddress)
pub fn add_direct_access_reference(&mut self, address: InternalAddress)
pub fn set_substate<'f, S, E>(
&mut self,
substate_io: &'f mut SubstateIO<'_, S>,
node_id: &NodeId,
partition_num: PartitionNumber,
key: SubstateKey,
value: IndexedScryptoValue,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
) -> Result<(), CallbackError<CallFrameSetSubstateError, E>>where
S: CommitableSubstateStore,
pub fn remove_substate<'f, S, E>(
&mut self,
substate_io: &'f mut SubstateIO<'_, S>,
node_id: &NodeId,
partition_num: PartitionNumber,
key: &SubstateKey,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
) -> Result<Option<IndexedScryptoValue>, CallbackError<CallFrameRemoveSubstateError, E>>where
S: CommitableSubstateStore,
pub fn scan_keys<'f, K, S, E>(
&mut self,
substate_io: &'f mut SubstateIO<'_, S>,
node_id: &NodeId,
partition_num: PartitionNumber,
limit: u32,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
) -> Result<Vec<SubstateKey>, CallbackError<CallFrameScanKeysError, E>>where
K: SubstateKeyContent,
S: CommitableSubstateStore,
pub fn drain_substates<'f, K, S, E>(
&mut self,
substate_io: &'f mut SubstateIO<'_, S>,
node_id: &NodeId,
partition_num: PartitionNumber,
limit: u32,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
) -> Result<Vec<(SubstateKey, IndexedScryptoValue)>, CallbackError<CallFrameDrainSubstatesError, E>>where
K: SubstateKeyContent,
S: CommitableSubstateStore,
pub fn scan_sorted<'f, S, E>(
&mut self,
substate_io: &'f mut SubstateIO<'_, S>,
node_id: &NodeId,
partition_num: PartitionNumber,
count: u32,
handler: &mut impl CallFrameIOAccessHandler<C, L, E>,
) -> Result<Vec<(([u8; 2], Vec<u8>), IndexedScryptoValue)>, CallbackError<CallFrameScanSortedSubstatesError, E>>where
S: CommitableSubstateStore,
pub fn owned_nodes(&self) -> Vec<NodeId>
pub fn get_node_visibility(&self, node_id: &NodeId) -> NodeVisibility
pub fn stable_references(&self) -> &BTreeMap<NodeId, StableReferenceType>
Auto Trait Implementations§
impl<C, L> Freeze for CallFrame<C, L>where
C: Freeze,
impl<C, L> RefUnwindSafe for CallFrame<C, L>where
C: RefUnwindSafe,
L: RefUnwindSafe,
impl<C, L> Send for CallFrame<C, L>
impl<C, L> Sync for CallFrame<C, L>
impl<C, L> Unpin for CallFrame<C, L>
impl<C, L> UnwindSafe for CallFrame<C, L>where
C: UnwindSafe,
L: UnwindSafe,
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<T, U> ContextualTryInto<U> for Twhere
U: ContextualTryFrom<T>,
impl<T, U> ContextualTryInto<U> for Twhere
U: ContextualTryFrom<T>,
type Error = <U as ContextualTryFrom<T>>::Error
type Context = <U as ContextualTryFrom<T>>::Context
fn contextual_try_into( self, context: &<U as ContextualTryFrom<T>>::Context, ) -> Result<U, <U as ContextualTryFrom<T>>::Error>
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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 more