tether-agent 4.2.1-alpha

Standardised use of MQTT and MessagePack for inter-process communication
Documentation
use crate::TetherAgent;
use serde::Serialize;

use super::definitions::ChannelSenderDef;

pub struct ChannelSender<'a, T: Serialize> {
    definition: ChannelSenderDef,
    tether_agent: &'a TetherAgent,
    marker: std::marker::PhantomData<T>,
}

impl<'a, T: Serialize> ChannelSender<'a, T> {
    pub fn new(
        tether_agent: &'a TetherAgent,
        definition: ChannelSenderDef,
    ) -> ChannelSender<'a, T> {
        ChannelSender {
            definition,
            tether_agent,
            marker: std::marker::PhantomData,
        }
    }

    pub fn definition(&self) -> &ChannelSenderDef {
        &self.definition
    }

    pub fn send(&self, payload: &T) -> anyhow::Result<()> {
        self.tether_agent.send(self, payload)
    }

    pub fn send_raw(&self, payload: &[u8]) -> anyhow::Result<()> {
        self.tether_agent.send_raw(self.definition(), Some(payload))
    }
}