Struct wasmtime_wasi::preview2::WasiCtxBuilder
source · pub struct WasiCtxBuilder { /* private fields */ }
Implementations§
source§impl WasiCtxBuilder
impl WasiCtxBuilder
sourcepub fn new() -> Self
pub fn new() -> Self
Creates a builder for a new context with default parameters set.
The current defaults are:
- stdin is closed
- stdout and stderr eat all input but it doesn’t go anywhere
- no env vars
- no arguments
- no preopens
- clocks use the host implementation of wall/monotonic clocks
- RNGs are all initialized with random state and suitable generator quality to satisfy the requirements of WASI APIs.
These defaults can all be updated via the various builder configuration methods below.
Note that each builder can only be used once to produce a WasiCtx
.
Invoking the build
method will panic on the
second attempt.
pub fn stdin(&mut self, stdin: impl StdinStream + 'static) -> &mut Self
pub fn stdout(&mut self, stdout: impl StdoutStream + 'static) -> &mut Self
pub fn stderr(&mut self, stderr: impl StdoutStream + 'static) -> &mut Self
pub fn inherit_stdin(&mut self) -> &mut Self
pub fn inherit_stdout(&mut self) -> &mut Self
pub fn inherit_stderr(&mut self) -> &mut Self
pub fn inherit_stdio(&mut self) -> &mut Self
pub fn envs(&mut self, env: &[(impl AsRef<str>, impl AsRef<str>)]) -> &mut Self
pub fn env(&mut self, k: impl AsRef<str>, v: impl AsRef<str>) -> &mut Self
pub fn args(&mut self, args: &[impl AsRef<str>]) -> &mut Self
pub fn arg(&mut self, arg: impl AsRef<str>) -> &mut Self
pub fn preopened_dir( &mut self, dir: Dir, perms: DirPerms, file_perms: FilePerms, path: impl AsRef<str> ) -> &mut Self
sourcepub fn secure_random(
&mut self,
random: impl RngCore + Send + Sync + 'static
) -> &mut Self
pub fn secure_random( &mut self, random: impl RngCore + Send + Sync + 'static ) -> &mut Self
Set the generator for the secure random number generator to the custom generator specified.
Note that contexts have a default RNG configured which is a suitable generator for WASI and is configured with a random seed per-context.
Guest code may rely on this random number generator to produce fresh unpredictable random data in order to maintain its security invariants, and ideally should use the insecure random API otherwise, so using any prerecorded or otherwise predictable data may compromise security.
pub fn insecure_random( &mut self, insecure_random: impl RngCore + Send + Sync + 'static ) -> &mut Self
pub fn insecure_random_seed(&mut self, insecure_random_seed: u128) -> &mut Self
pub fn wall_clock(&mut self, clock: impl HostWallClock + 'static) -> &mut Self
pub fn monotonic_clock( &mut self, clock: impl HostMonotonicClock + 'static ) -> &mut Self
sourcepub fn inherit_network(
&mut self,
ambient_authority: AmbientAuthority
) -> &mut Self
pub fn inherit_network( &mut self, ambient_authority: AmbientAuthority ) -> &mut Self
Add all network addresses accessable to the host to the pool.
sourcepub fn insert_addr<A: ToSocketAddrs>(&mut self, addrs: A) -> Result<&mut Self>
pub fn insert_addr<A: ToSocketAddrs>(&mut self, addrs: A) -> Result<&mut Self>
Add network addresses to the pool.
sourcepub fn insert_socket_addr(&mut self, addr: SocketAddr) -> &mut Self
pub fn insert_socket_addr(&mut self, addr: SocketAddr) -> &mut Self
Add a specific cap_std::net::SocketAddr
to the pool.
sourcepub fn insert_ip_net_port_any(&mut self, ip_net: IpNet) -> &mut Self
pub fn insert_ip_net_port_any(&mut self, ip_net: IpNet) -> &mut Self
Add a range of network addresses, accepting any port, to the pool.
Unlike insert_ip_net
, this function grants access to any requested port.
sourcepub fn insert_ip_net_port_range(
&mut self,
ip_net: IpNet,
ports_start: u16,
ports_end: Option<u16>
) -> &mut Self
pub fn insert_ip_net_port_range( &mut self, ip_net: IpNet, ports_start: u16, ports_end: Option<u16> ) -> &mut Self
Add a range of network addresses, accepting a range of ports, to per-instance networks.
This grants access to the port range starting at ports_start
and, if
ports_end
is provided, ending before ports_end
.
sourcepub fn insert_ip_net(&mut self, ip_net: IpNet, port: u16) -> &mut Self
pub fn insert_ip_net(&mut self, ip_net: IpNet, port: u16) -> &mut Self
Add a range of network addresses with a specific port to the pool.
sourcepub fn allow_ip_name_lookup(&mut self, enable: bool) -> &mut Self
pub fn allow_ip_name_lookup(&mut self, enable: bool) -> &mut Self
Allow usage of wasi:sockets/ip-name-lookup
sourcepub fn build(&mut self) -> WasiCtx
pub fn build(&mut self) -> WasiCtx
Uses the configured context so far to construct the final WasiCtx
.
This will insert resources into the provided table
.
Note that each WasiCtxBuilder
can only be used to “build” once, and
calling this method twice will panic.
Panics
Panics if this method is called twice.
Auto Trait Implementations§
impl !RefUnwindSafe for WasiCtxBuilder
impl Send for WasiCtxBuilder
impl Sync for WasiCtxBuilder
impl Unpin for WasiCtxBuilder
impl !UnwindSafe for WasiCtxBuilder
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> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
self
file descriptor.source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
self
file descriptor. Read more