Struct cosmwasm_vm::Cache

source ·
pub struct Cache<A: BackendApi, S: Storage, Q: Querier> { /* private fields */ }

Implementations§

source§

impl<A, S, Q> Cache<A, S, Q>where
    A: BackendApi + 'static,
    S: Storage + 'static,
    Q: Querier + 'static,

source

pub unsafe fn new(options: CacheOptions) -> VmResult<Self>

Creates a new cache that stores data in base_dir.

Safety

This function is marked unsafe due to FileSystemCache::new, which implicitly assumes the disk contents are correct, and there’s no way to ensure the artifacts stored in the cache haven’t been corrupted or tampered with.

source

pub fn stats(&self) -> Stats

source

pub fn metrics(&self) -> Metrics

source

pub fn save_wasm(&self, wasm: &[u8]) -> VmResult<Checksum>

source

pub fn remove_wasm(&self, checksum: &Checksum) -> VmResult<()>

Removes the Wasm blob for the given checksum from disk and its compiled module from the file system cache.

The existence of the original code is required since the caller (wasmd) has to keep track of which entries we have here.

source

pub fn load_wasm(&self, checksum: &Checksum) -> VmResult<Vec<u8>>

Retrieves a Wasm blob that was previously stored via save_wasm. When the cache is instantiated with the same base dir, this finds Wasm files on disc across multiple cache instances (i.e. node restarts). This function is public to allow a checksum to Wasm lookup in the blockchain.

If the given ID is not found or the content does not match the hash (=ID), an error is returned.

source

pub fn analyze(&self, checksum: &Checksum) -> VmResult<AnalysisReport>

Performs static anlyzation on this Wasm without compiling or instantiating it.

Once the contract was stored via [save_wasm], this can be called at any point in time. It does not depend on any caching of the contract.

source

pub fn pin(&self, checksum: &Checksum) -> VmResult<()>

Pins a Module that was previously stored via save_wasm.

The module is lookup first in the memory cache, and then in the file system cache. If not found, the code is loaded from the file system, compiled, and stored into the pinned cache. If the given ID is not found, or the content does not match the hash (=ID), an error is returned.

source

pub fn unpin(&self, checksum: &Checksum) -> VmResult<()>

Unpins a Module, i.e. removes it from the pinned memory cache.

Not found IDs are silently ignored, and no integrity check (checksum validation) is done on the removed value.

source

pub fn get_instance(
    &self,
    checksum: &Checksum,
    backend: Backend<A, S, Q>,
    options: InstanceOptions
) -> VmResult<Instance<A, S, Q>>

Returns an Instance tied to a previously saved Wasm.

It takes a module from cache or Wasm code and instantiates it.

Trait Implementations§

source§

impl<A, S, Q> Send for Cache<A, S, Q>where
    A: BackendApi + 'static,
    S: Storage + 'static,
    Q: Querier + 'static,

source§

impl<A, S, Q> Sync for Cache<A, S, Q>where
    A: BackendApi + 'static,
    S: Storage + 'static,
    Q: Querier + 'static,

Auto Trait Implementations§

§

impl<A, S, Q> RefUnwindSafe for Cache<A, S, Q>where
    A: RefUnwindSafe,
    Q: RefUnwindSafe,
    S: RefUnwindSafe,

§

impl<A, S, Q> Unpin for Cache<A, S, Q>where
    A: Unpin,
    Q: Unpin,
    S: Unpin,

§

impl<A, S, Q> UnwindSafe for Cache<A, S, Q>where
    A: UnwindSafe,
    Q: UnwindSafe,
    S: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere
    T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata(
    _: &<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
source§

impl<T> Borrow<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<F, W, T, D> Deserialize<With<T, W>, D> for Fwhere
    W: DeserializeWith<F, T, D>,
    D: Fallible + ?Sized,
    F: ?Sized,

§

fn deserialize(
    &self,
    deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere
    U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Metadata = ()

The type for metadata in pointers and references to Self.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere
    U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere
    U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> Upcastable for Twhere
    T: Any + Send + Sync + 'static,

§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
§

fn upcast_any_box(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>

upcast boxed dyn
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
    S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more