zelos-proto 0.0.1

Protocol buffer definitions for Zelos tracing system
Documentation
use zelos_trace_types::ipc;

use super::TraceMessageBatch;
use crate::error::Error;

impl super::SubscribeResponse {
    pub fn from_ipc(messages: Vec<super::TraceMessage>) -> Self {
        Self {
            msg: Some(super::subscribe_response::Msg::TraceMessageBatch(
                TraceMessageBatch { messages },
            )),
        }
    }

    pub fn as_ipc(self) -> Result<Vec<ipc::IpcMessageWithId>, Error> {
        match self.msg {
            Some(super::subscribe_response::Msg::TraceMessageBatch(msg)) => {
                msg.messages.into_iter().map(|msg| msg.try_into()).collect()
            }
            None => Err(Error::MissingMessage),
        }
    }
}