wasmlet 0.0.2

High-performance, embeddable WebAssembly execution engine
Documentation
use anyhow::{bail, Context as _};
use wasmtime::component::Resource;

use crate::engine::bindings::wasi::sockets::instance_network;
use crate::engine::bindings::wasi::sockets::network::{ErrorCode, Host, HostNetwork};
use crate::engine::wasi;
use crate::engine::wasi::sockets::Network;
use crate::Ctx;

impl instance_network::Host for Ctx {
    fn instance_network(&mut self) -> wasmtime::Result<Resource<Network>> {
        self.table
            .push(Network)
            .context("failed to push network resource")
    }
}

impl HostNetwork for Ctx {
    fn drop(&mut self, net: Resource<Network>) -> wasmtime::Result<()> {
        self.table
            .delete(net)
            .context("failed to delete network resource")?;
        Ok(())
    }
}

impl Host for Ctx {
    fn network_error_code(
        &mut self,
        _err: Resource<wasi::io::Error>,
    ) -> wasmtime::Result<Option<ErrorCode>> {
        bail!("not supported yet")
    }
}