use crate::ds::DeliveryServiceError;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct OutboundPacket {
pub payload: Vec<u8>,
pub subtopic: String,
pub group_id: String,
pub app_id: Vec<u8>,
}
impl OutboundPacket {
pub fn new(payload: Vec<u8>, subtopic: &str, group_id: &str, app_id: &[u8]) -> Self {
Self {
payload,
subtopic: subtopic.to_string(),
group_id: group_id.to_string(),
app_id: app_id.to_vec(),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct InboundPacket {
pub payload: Vec<u8>,
pub subtopic: String,
pub group_id: String,
pub app_id: Vec<u8>,
pub timestamp: i64,
}
impl InboundPacket {
pub fn new(
payload: Vec<u8>,
subtopic: &str,
group_id: &str,
app_id: Vec<u8>,
timestamp: i64,
) -> Self {
Self {
payload,
subtopic: subtopic.to_string(),
group_id: group_id.to_string(),
app_id,
timestamp,
}
}
}
pub trait DeliveryService: Send + Sync + 'static {
fn send(&self, pkt: OutboundPacket) -> Result<String, DeliveryServiceError>;
fn subscribe(&self) -> std::sync::mpsc::Receiver<InboundPacket>;
}