harmos_sdk/operations/
instances.rs1use std::{future::Future, pin::Pin, sync::Arc};
18use harmos_domain::operations::instance::{Id, Status};
20pub type Changed<'a> = Pin<Box<dyn Future<Output = bool> + Send + 'a>>;
29
30#[derive(Clone)]
33pub struct InstanceAccess(pub Arc<dyn Instances>);
34
35pub trait Instances: Send + Sync {
40 fn owned(&self, id: Id) -> Option<Arc<dyn InstanceControl>>;
41}
42pub trait InstanceControl: Send + Sync {
43 fn status(&self) -> Status;
44 fn cancel(&self);
45 fn subscribe(&self) -> Box<dyn InstanceChanges>;
46}
47pub trait InstanceChanges: Send {
48 fn current(&mut self) -> Status;
49 fn changed(&mut self) -> Changed<'_>;
50}
51
52