use crate::error::FrameDecodeError;
#[repr(u8)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OpCode {
Continuation = 0x0,
Text = 0x1,
Binary = 0x2,
Close = 0x8,
Ping = 0x9,
Pong = 0xA,
}
impl OpCode {
pub(crate) const fn is_control(&self) -> bool {
matches!(self, OpCode::Close | OpCode::Ping | OpCode::Pong)
}
pub(crate) const fn try_from_u8(code: u8) -> Result<Self, FrameDecodeError> {
match code {
0x0 => Ok(OpCode::Continuation),
0x1 => Ok(OpCode::Text),
0x2 => Ok(OpCode::Binary),
0x8 => Ok(OpCode::Close),
0x9 => Ok(OpCode::Ping),
0xA => Ok(OpCode::Pong),
_ => Err(FrameDecodeError::InvalidOpCode),
}
}
}