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