Struct fvm_actor_utils::util::ActorRuntime
source · pub struct ActorRuntime<S: Syscalls, BS: Blockstore> {
pub syscalls: S,
pub blockstore: BS,
}
Expand description
ActorRuntime provides access to system resources via Syscalls and the Blockstore
It provides higher level utilities than raw syscalls for actors to use to interact with the IPLD layer and the FVM runtime (e.g. messaging other actors)
Fields§
§syscalls: S
§blockstore: BS
Implementations§
source§impl<S: Syscalls + Clone, BS: Blockstore + Clone> ActorRuntime<S, BS>
impl<S: Syscalls + Clone, BS: Blockstore + Clone> ActorRuntime<S, BS>
pub fn new_fvm_runtime() -> ActorRuntime<FvmSyscalls, Blockstore>
source§impl<S: Syscalls, BS: Blockstore> ActorRuntime<S, BS>
impl<S: Syscalls, BS: Blockstore> ActorRuntime<S, BS>
pub fn new(syscalls: S, blockstore: BS) -> ActorRuntime<S, BS>
sourcepub fn new_test_runtime() -> ActorRuntime<FakeSyscalls, MemoryBlockstore>
pub fn new_test_runtime() -> ActorRuntime<FakeSyscalls, MemoryBlockstore>
Creates a runtime suitable for tests, using mock syscalls and a memory blockstore
Creates a runtime suitable for more complex tests, using mock syscalls and a shared memory blockstore Clones of this runtime will reference the same blockstore
pub fn caller(&self) -> ActorID
sourcepub fn send(
&self,
to: &Address,
method: MethodNum,
params: Option<IpldBlock>,
value: TokenAmount,
) -> MessagingResult<Response>
pub fn send( &self, to: &Address, method: MethodNum, params: Option<IpldBlock>, value: TokenAmount, ) -> MessagingResult<Response>
Sends a message to an actor
sourcepub fn resolve_id(&self, address: &Address) -> MessagingResult<ActorID>
pub fn resolve_id(&self, address: &Address) -> MessagingResult<ActorID>
Attempts to resolve the given address to its ID address form
Returns MessagingError::AddressNotResolved if the address could not be resolved
sourcepub fn resolve_or_init(&self, address: &Address) -> MessagingResult<ActorID>
pub fn resolve_or_init(&self, address: &Address) -> MessagingResult<ActorID>
Resolves an address to an ID address, sending a message to initialize an account there if it doesn’t exist
If the account cannot be created, this function returns MessagingError::AddressNotInitialized
pub fn initialize_account(&self, address: &Address) -> MessagingResult<ActorID>
sourcepub fn root_cid(&self) -> Result<Cid, ActorError>
pub fn root_cid(&self) -> Result<Cid, ActorError>
Get the root cid of the actor’s state
sourcepub fn set_root(&self, cid: &Cid) -> Result<(), ActorError>
pub fn set_root(&self, cid: &Cid) -> Result<(), ActorError>
Set the root cid of the actor’s state
sourcepub fn same_address(&self, address_a: &Address, address_b: &Address) -> bool
pub fn same_address(&self, address_a: &Address, address_b: &Address) -> bool
Attempts to compare two addresses, seeing if they would resolve to the same Actor without actually instantiating accounts for them
If a and b are of the same type, simply do an equality check. Otherwise, attempt to resolve to an ActorID and compare
pub fn bs(&self) -> &BS
Trait Implementations§
source§impl<S: Syscalls, BS: Blockstore> Blockstore for ActorRuntime<S, BS>
impl<S: Syscalls, BS: Blockstore> Blockstore for ActorRuntime<S, BS>
Convenience impl encapsulating the blockstore functionality
source§fn put_keyed(&self, k: &Cid, block: &[u8]) -> Result<()>
fn put_keyed(&self, k: &Cid, block: &[u8]) -> Result<()>
source§fn has(&self, k: &Cid<64>) -> Result<bool, Error>
fn has(&self, k: &Cid<64>) -> Result<bool, Error>
source§fn put<D>(&self, mh_code: Code, block: &Block<D>) -> Result<Cid<64>, Error>
fn put<D>(&self, mh_code: Code, block: &Block<D>) -> Result<Cid<64>, Error>
source§impl<S: Clone + Syscalls, BS: Clone + Blockstore> Clone for ActorRuntime<S, BS>
impl<S: Clone + Syscalls, BS: Clone + Blockstore> Clone for ActorRuntime<S, BS>
source§fn clone(&self) -> ActorRuntime<S, BS>
fn clone(&self) -> ActorRuntime<S, BS>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<S: Debug + Syscalls, BS: Debug + Blockstore> Debug for ActorRuntime<S, BS>
impl<S: Debug + Syscalls, BS: Debug + Blockstore> Debug for ActorRuntime<S, BS>
Auto Trait Implementations§
impl<S, BS> Freeze for ActorRuntime<S, BS>
impl<S, BS> RefUnwindSafe for ActorRuntime<S, BS>where
S: RefUnwindSafe,
BS: RefUnwindSafe,
impl<S, BS> Send for ActorRuntime<S, BS>
impl<S, BS> Sync for ActorRuntime<S, BS>
impl<S, BS> Unpin for ActorRuntime<S, BS>
impl<S, BS> UnwindSafe for ActorRuntime<S, BS>where
S: UnwindSafe,
BS: 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
source§impl<T> CborStore for Twhere
T: Blockstore,
impl<T> CborStore for Twhere
T: Blockstore,
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.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>
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>
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<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.