1 use super::prelude::*; 2 use crate::protocol::common::lists::ArgListHex; 3 4 #[derive(Debug)] 5 pub enum QCatchSyscalls<'a> { 6 Disable, 7 Enable(ArgListHex<'a>), 8 EnableAll, 9 } 10 11 impl<'a> ParseCommand<'a> for QCatchSyscalls<'a> { 12 #[inline(always)] from_packet(buf: PacketBuf<'a>) -> Option<Self>13 fn from_packet(buf: PacketBuf<'a>) -> Option<Self> { 14 let body = buf.into_body(); 15 16 match body { 17 [b':', b'0'] => Some(QCatchSyscalls::Disable), 18 [b':', b'1', b';', sysno @ ..] => { 19 Some(QCatchSyscalls::Enable(ArgListHex::from_packet(sysno)?)) 20 } 21 [b':', b'1'] => Some(QCatchSyscalls::EnableAll), 22 _ => None, 23 } 24 } 25 } 26