Trait wiggle::wasmtime_crate::ResourceLimiter [−][src]
pub trait ResourceLimiter {
fn memory_growing(
&mut self,
current: usize,
desired: usize,
maximum: Option<usize>
) -> bool;
fn table_growing(
&mut self,
current: u32,
desired: u32,
maximum: Option<u32>
) -> bool;
fn memory_grow_failed(&mut self, _error: &Error) { ... }
fn instances(&self) -> usize { ... }
fn tables(&self) -> usize { ... }
fn memories(&self) -> usize { ... }
}
Expand description
Used by hosts to limit resource consumption of instances.
An instance can be created with a resource limiter so that hosts can take into account non-WebAssembly resource usage to determine if a linear memory or table should grow.
Required methods
Notifies the resource limiter that an instance’s linear memory has been requested to grow.
current
is the current size of the linear memory in bytes.desired
is the desired size of the linear memory in bytes.maximum
is either the linear memory’s maximum or a maximum from an instance allocator, also in bytes. A value ofNone
indicates that the linear memory is unbounded.
This function should return true
to indicate that the growing
operation is permitted or false
if not permitted. Returning true
when a maximum has been exceeded will have no effect as the linear
memory will not grow.
This function is not guaranteed to be invoked for all requests to
memory.grow
. Requests where the allocation requested size doesn’t fit
in usize
or exceeds the memory’s listed maximum size may not invoke
this method.
Notifies the resource limiter that an instance’s table has been requested to grow.
current
is the current number of elements in the table.desired
is the desired number of elements in the table.maximum
is either the table’s maximum or a maximum from an instance allocator. A value ofNone
indicates that the table is unbounded.
This function should return true
to indicate that the growing operation is permitted or
false
if not permitted. Returning true
when a maximum has been exceeded will have no
effect as the table will not grow.
Provided methods
fn memory_grow_failed(&mut self, _error: &Error)
fn memory_grow_failed(&mut self, _error: &Error)
Notifies the resource limiter that growing a linear memory, permitted by
the memory_growing
method, has failed.
Reasons for failure include: the growth exceeds the maximum
passed to
memory_growing
, or the operating system failed to allocate additional
memory. In that case, error
might be downcastable to a std::io::Error
.
The maximum number of instances that can be created for a Store
.
Module instantiation will fail if this limit is exceeded.
This value defaults to 10,000.
The maximum number of tables that can be created for a Store
.
Module instantiation will fail if this limit is exceeded.
This value defaults to 10,000.