• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use super::prelude::*;
2 
3 #[derive(Debug)]
4 pub struct QEnvironmentHexEncoded<'a> {
5     pub key: &'a [u8],
6     pub value: Option<&'a [u8]>,
7 }
8 
9 impl<'a> ParseCommand<'a> for QEnvironmentHexEncoded<'a> {
10     #[inline(always)]
from_packet(buf: PacketBuf<'a>) -> Option<Self>11     fn from_packet(buf: PacketBuf<'a>) -> Option<Self> {
12         let body = buf.into_body();
13 
14         let (key, value) = match body {
15             [b':', keyval @ ..] => {
16                 let keyval = decode_hex_buf(keyval).ok()?;
17                 let mut keyval = keyval.splitn(2, |b| *b == b'=');
18                 let key = keyval.next()?;
19                 let value = match keyval.next()? {
20                     [] => None,
21                     s => Some(s),
22                 };
23                 (key, value)
24             }
25             _ => return None,
26         };
27 
28         Some(QEnvironmentHexEncoded { key, value })
29     }
30 }
31