wasmx 0.0.0

High-performance, embeddable WebAssembly execution engine
Documentation
use std::collections::BTreeMap;
use std::path::PathBuf;

use serde::{Deserialize, Serialize};

pub mod sockets;

pub use sockets::Config as Sockets;

#[derive(Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
#[serde(tag = "type")]
pub enum Mount {
    #[serde(rename = "host")]
    Host { path: PathBuf },
}

#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
pub struct Filesystem {
    #[serde(default)]
    pub mounts: BTreeMap<Box<str>, Mount>,
}

#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(tag = "type")]
pub enum Cgroup {
    #[serde(rename = "none")]
    None,
    #[serde(rename = "host")]
    Host { path: PathBuf },
    #[serde(rename = "dynamic")]
    #[default]
    Dynamic,
}

#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
pub struct Cpu {
    #[serde(default)]
    pub max: Box<str>,
}

#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
pub struct Resources {
    #[serde(default)]
    pub cpu: Cpu,
}

#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
pub struct Namespace {
    #[serde(default)]
    pub ipc: PathBuf,
    #[serde(default)]
    pub network: PathBuf,
    #[serde(default)]
    pub uts: PathBuf,
}

#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
pub struct Linux {
    #[serde(default)]
    pub cgroup: Cgroup,
    #[serde(default)]
    pub namespace: Namespace,
    #[serde(default)]
    pub resources: Resources,
}

#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
#[serde(deny_unknown_fields)]
pub struct Config {
    #[serde(default)]
    pub linux: Linux,
    #[serde(default)]
    pub filesystem: Filesystem,
    #[serde(default)]
    pub sockets: sockets::Config,
}