use async_trait::async_trait;
use libdd_capabilities::MaybeSend;
#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
pub trait Worker: std::fmt::Debug + MaybeSend {
async fn run(&mut self);
async fn trigger(&mut self);
async fn initial_trigger(&mut self) {
self.trigger().await
}
fn reset(&mut self) {}
async fn shutdown(&mut self) {}
}
#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
impl Worker for Box<dyn Worker + Sync> {
async fn run(&mut self) {
(**self).run().await
}
async fn trigger(&mut self) {
(**self).trigger().await
}
async fn initial_trigger(&mut self) {
(**self).initial_trigger().await
}
fn reset(&mut self) {
(**self).reset()
}
async fn shutdown(&mut self) {
(**self).shutdown().await
}
}