gantry_protocol/
lib.rs

1#[macro_use]
2extern crate serde_derive;
3
4extern crate rmp_serde as rmps;
5use rmps::{Deserializer, Serializer};
6use serde::{Deserialize, Serialize};
7use std::io::Cursor;
8
9pub fn serialize<T>(item: T) -> ::std::result::Result<Vec<u8>, Box<dyn ::std::error::Error>>
10where
11    T: Serialize,
12{
13    let mut buf = Vec::new();
14    item.serialize(&mut Serializer::new(&mut buf))?;
15    Ok(buf)
16}
17
18pub fn deserialize<'de, T: Deserialize<'de>>(
19    buf: &[u8],
20) -> ::std::result::Result<T, Box<dyn ::std::error::Error>> {
21    let mut de = Deserializer::new(Cursor::new(buf));
22    match Deserialize::deserialize(&mut de) {
23        Ok(t) => Ok(t),
24        Err(e) => Err(format!("Failed to de-serialize: {}", e).into()),
25    }
26}
27
28pub mod catalog;
29pub mod stream;
30
31pub mod token {
32    pub enum TokenType {
33        Actor,
34        Account,
35        Operator,
36    }
37}
38
39#[derive(Debug, PartialEq, Deserialize, Serialize)]
40pub struct PingResponse {
41    pub catalog_healthy: bool,
42    pub streams_healthy: bool,
43    pub operator_signers: Vec<String>,
44}