use crate::error::Error;
pub use sc_allocator::AllocationStats;
pub const DEFAULT_HEAP_ALLOC_STRATEGY: HeapAllocStrategy =
HeapAllocStrategy::Static { extra_pages: DEFAULT_HEAP_ALLOC_PAGES };
pub const DEFAULT_HEAP_ALLOC_PAGES: u32 = 2048;
pub trait WasmModule: Sync + Send {
fn new_instance(&self) -> Result<Box<dyn WasmInstance>, Error>;
}
pub trait WasmInstance: Send {
fn call(&mut self, method: &str, data: &[u8]) -> Result<Vec<u8>, Error> {
self.call_with_allocation_stats(method, data).0
}
fn call_with_allocation_stats(
&mut self,
method: &str,
data: &[u8],
) -> (Result<Vec<u8>, Error>, Option<AllocationStats>);
fn call_export(&mut self, method: &str, data: &[u8]) -> Result<Vec<u8>, Error> {
self.call(method.into(), data)
}
}
#[derive(Debug, Copy, Clone, PartialEq, Hash, Eq)]
pub enum HeapAllocStrategy {
Static {
extra_pages: u32,
},
Dynamic {
maximum_pages: Option<u32>,
},
}