use std::path::PathBuf;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use super::error::Error;
use crate::sandbox::shim::Config;
#[derive(Clone, Serialize, Deserialize, Debug, Default)]
pub struct InstanceConfig {
pub stdin: PathBuf,
pub stdout: PathBuf,
pub stderr: PathBuf,
pub bundle: PathBuf,
pub namespace: String,
pub containerd_address: String,
pub config: Config,
}
#[cfg_attr(not(doc), trait_variant::make(Send))]
pub trait Instance: 'static {
async fn new(id: String, cfg: &InstanceConfig) -> Result<Self, Error>
where
Self: Sized;
async fn start(&self) -> Result<u32, Error>;
async fn kill(&self, signal: u32) -> Result<(), Error>;
async fn delete(&self) -> Result<(), Error>;
async fn wait(&self) -> (u32, DateTime<Utc>);
}