#[doc(hidden)]
extern crate alloc;
use alloc::string::String;
use dimas_core::{
error::Result,
message_types::{Message, QueryableMsg},
traits::Capability,
};
pub trait LivelinessSubscriber: Capability + Send + Sync {
fn token(&self) -> &String;
}
pub trait Observer: Capability + Send + Sync {
#[must_use]
fn selector(&self) -> &str;
fn cancel(&self) -> Result<()>;
fn request(&self, message: Option<Message>) -> Result<()>;
}
pub trait Publisher: Capability + Send + Sync {
#[must_use]
fn selector(&self) -> &str;
fn put(&self, message: Message) -> Result<()>;
fn delete(&self) -> Result<()>;
}
pub trait Querier: Capability + Send + Sync {
#[must_use]
fn selector(&self) -> &str;
fn get(
&self,
message: Option<Message>,
callback: Option<&mut dyn FnMut(QueryableMsg) -> Result<()>>,
) -> Result<()>;
}
pub trait Responder: Capability + Send + Sync {
#[must_use]
fn selector(&self) -> &str;
}