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