pub trait Message: std::fmt::Debug + Send + Unpin + 'static {
fn message_id(&self) -> u64;
fn control_code(&self) -> ProtosocketControlCode;
fn set_message_id(&mut self, message_id: u64);
fn cancelled(message_id: u64) -> Self;
fn ended(message_id: u64) -> Self;
}
#[derive(Debug, Clone, Copy)]
#[repr(u8)]
pub enum ProtosocketControlCode {
Normal = 0,
Cancel = 1,
End = 2,
}
impl ProtosocketControlCode {
pub fn from_u8(value: u8) -> Self {
match value {
0 => Self::Normal,
1 => Self::Cancel,
2 => Self::End,
_ => Self::Cancel,
}
}
pub fn as_u8(&self) -> u8 {
match self {
Self::Normal => 0,
Self::Cancel => 1,
Self::End => 2,
}
}
}