Struct scrypto_test::prelude::SubstateIO
source · pub struct SubstateIO<'g, S>where
S: CommitableSubstateStore,{
pub heap: Heap,
pub store: &'g mut S,
pub non_global_node_refs: NonGlobalNodeRefs,
pub substate_locks: SubstateLocks<LockData>,
pub heap_transient_substates: TransientSubstates,
pub pinned_to_heap: BTreeSet<NodeId>,
}
Fields§
§heap: Heap
§store: &'g mut S
§non_global_node_refs: NonGlobalNodeRefs
§substate_locks: SubstateLocks<LockData>
§heap_transient_substates: TransientSubstates
§pinned_to_heap: BTreeSet<NodeId>
Implementations§
source§impl<'g, S> SubstateIO<'g, S>where
S: CommitableSubstateStore + 'g,
impl<'g, S> SubstateIO<'g, S>where
S: CommitableSubstateStore + 'g,
sourcepub fn create_node<E>(
&mut self,
device: SubstateDevice,
node_id: NodeId,
node_substates: BTreeMap<PartitionNumber, BTreeMap<SubstateKey, IndexedScryptoValue>>,
handler: &mut impl IOAccessHandler<E>
) -> Result<(), CallbackError<CreateNodeError, E>>
pub fn create_node<E>( &mut self, device: SubstateDevice, node_id: NodeId, node_substates: BTreeMap<PartitionNumber, BTreeMap<SubstateKey, IndexedScryptoValue>>, handler: &mut impl IOAccessHandler<E> ) -> Result<(), CallbackError<CreateNodeError, E>>
Creates a new node with partitions/substates at the given device. No additional node movement occurs (For example, owned nodes in node substates are not moved and must be done manually using other interfaces)
pub fn drop_node<E>( &mut self, device: SubstateDevice, node_id: &NodeId, handler: &mut impl IOAccessHandler<E> ) -> Result<BTreeMap<PartitionNumber, BTreeMap<SubstateKey, IndexedScryptoValue>>, CallbackError<DropNodeError, E>>
pub fn move_node_from_heap_to_store<E>( &mut self, node_id: &NodeId, handler: &mut impl IOAccessHandler<E> ) -> Result<(), CallbackError<PersistNodeError, E>>
pub fn move_partition<E, 'f>( &mut self, src_device: SubstateDevice, src_node_id: &NodeId, src_partition_number: PartitionNumber, dest_device: SubstateDevice, dest_node_id: &NodeId, dest_partition_number: PartitionNumber, handler: &mut impl IOAccessHandler<E> ) -> Result<(), CallbackError<MovePartitionError, E>>
pub fn open_substate<E, D>(
&mut self,
device: SubstateDevice,
node_id: &NodeId,
partition_num: PartitionNumber,
substate_key: &SubstateKey,
flags: LockFlags,
default: Option<D>,
handler: &mut impl IOAccessHandler<E>
) -> Result<(u32, &IndexedScryptoValue), CallbackError<OpenSubstateError, E>>where
D: FnOnce() -> IndexedScryptoValue,
pub fn read_substate<H>(
&mut self,
global_lock_handle: u32,
handler: &mut H
) -> Result<&IndexedScryptoValue, <H as SubstateReadHandler>::Error>where
H: SubstateReadHandler,
pub fn write_substate<E>( &mut self, global_lock_handle: u32, substate: IndexedScryptoValue, handler: &mut impl IOAccessHandler<E> ) -> Result<(), CallbackError<WriteSubstateError, E>>
pub fn close_substate( &mut self, global_lock_handle: u32 ) -> (NodeId, PartitionNumber, SubstateKey, LockFlags)
pub fn set_substate<E, 'f>( &mut self, device: SubstateDevice, node_id: &NodeId, partition_num: PartitionNumber, substate_key: SubstateKey, value: IndexedScryptoValue, handler: &mut impl IOAccessHandler<E> ) -> Result<(), CallbackError<CallFrameSetSubstateError, E>>
pub fn remove_substate<E, 'f>( &mut self, device: SubstateDevice, node_id: &NodeId, partition_num: PartitionNumber, key: &SubstateKey, handler: &mut impl IOAccessHandler<E> ) -> Result<Option<IndexedScryptoValue>, CallbackError<CallFrameRemoveSubstateError, E>>
pub fn scan_keys<K, E>(
&mut self,
device: SubstateDevice,
node_id: &NodeId,
partition_num: PartitionNumber,
count: u32,
handler: &mut impl IOAccessHandler<E>
) -> Result<Vec<SubstateKey>, CallbackError<CallFrameScanKeysError, E>>where
K: SubstateKeyContent + 'static,
pub fn drain_substates<K, E>(
&mut self,
device: SubstateDevice,
node_id: &NodeId,
partition_num: PartitionNumber,
count: u32,
handler: &mut impl IOAccessHandler<E>
) -> Result<Vec<(SubstateKey, IndexedScryptoValue)>, CallbackError<CallFrameDrainSubstatesError, E>>where
K: SubstateKeyContent + 'static,
pub fn scan_sorted<E, 'f>( &mut self, device: SubstateDevice, node_id: &NodeId, partition_num: PartitionNumber, count: u32, handler: &mut impl IOAccessHandler<E> ) -> Result<Vec<(([u8; 2], Vec<u8>), IndexedScryptoValue)>, CallbackError<CallFrameScanSortedSubstatesError, E>>
Auto Trait Implementations§
impl<'g, S> !RefUnwindSafe for SubstateIO<'g, S>
impl<'g, S> Send for SubstateIO<'g, S>where
S: Send,
impl<'g, S> !Sync for SubstateIO<'g, S>
impl<'g, S> Unpin for SubstateIO<'g, S>
impl<'g, S> !UnwindSafe for SubstateIO<'g, S>
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
Casts
self
to type T
. The semantics of numeric casting with the as
operator are followed, so <T as As>::as_::<U>
can be used in the same way as T as U
for numeric conversions. Read moresource§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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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
.§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
.§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.§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.