crows-wasm 0.3.0

WASM related utils for Crows
Documentation
mod constant_arrival_rate;
use constant_arrival_rate::ConstantArrivalRateExecutor;
use crows_shared::Config;
use crate::Runtime;

pub trait Executor {
    #[allow(async_fn_in_trait)]
    async fn prepare(&mut self) -> anyhow::Result<()>;
    #[allow(async_fn_in_trait)]
    async fn run(&mut self) -> anyhow::Result<()>;
}

pub enum Executors {
    ConstantArrivalRateExecutor(ConstantArrivalRateExecutor),
}

impl Executors {
    pub async fn create_executor(config: Config, runtime: Runtime) -> Self {
        match config {
            Config::ConstantArrivalRate(config) => {
                Executors::ConstantArrivalRateExecutor(ConstantArrivalRateExecutor {
                    config,
                    runtime,
                })
            }
        }
    }

    pub async fn run(&mut self) {
        match self {
            Executors::ConstantArrivalRateExecutor(ref mut executor) => {
                executor.run().await.unwrap()
            }
        }
    }

    pub async fn prepare(&mut self) {
        match self {
            Executors::ConstantArrivalRateExecutor(ref mut executor) => {
                executor.prepare().await.unwrap()
            }
        }
    }
}