use serde::Serialize;
use serde_json::Value;
use crate::Result;
use crate::bindings::oino::extension::bus as wb;
pub fn publish(topic: &str, data: &impl Serialize, sticky: bool) -> Result<()> {
wb::publish(topic, &serde_json::to_string(data)?, sticky);
Ok(())
}
pub fn subscribe(pattern: &str) {
wb::subscribe(pattern);
}
pub fn unsubscribe(pattern: &str) {
wb::unsubscribe(pattern);
}
#[must_use]
pub fn get(topic: &str) -> Option<Value> {
wb::get(topic).and_then(|t| serde_json::from_str(&t).ok())
}