use serde::de::DeserializeOwned;
use crate::context::Context;
pub trait Service {
type Message: DeserializeOwned;
fn on_message(message: Self::Message, ctx: &Context);
fn info() -> ServiceInfo;
}
pub struct ServiceInfo {
pub name: &'static str,
pub version_major: u16,
pub version_minor: u16,
}
impl ServiceInfo {
pub fn get_path(&self) -> String {
format!("{}-v{}", self.name, self.version_major)
}
}