use std::fmt;
#[derive(Clone, Copy, PartialEq, Eq)]
pub struct BusAbi {
id: &'static str,
}
impl BusAbi {
pub const fn id(&self) -> &'static str {
self.id
}
}
impl fmt::Debug for BusAbi {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "BusAbi({})", self.id)
}
}
impl fmt::Display for BusAbi {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.id)
}
}
pub const BUS_ABI: BusAbi = BusAbi {
id: "phoxal-bus/v0",
};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u8)]
pub enum CodecId {
MessagePack = 1,
}
impl CodecId {
pub const fn as_u8(self) -> u8 {
self as u8
}
pub fn from_u8(value: u8) -> Option<Self> {
match value {
1 => Some(CodecId::MessagePack),
_ => None,
}
}
}
pub fn encoding_string(family: &str, api_version: &str, codec: CodecId) -> String {
format!(
"phoxal/v0;family={family};api={api_version};codec={}",
codec.as_u8()
)
}