blob: 9467e5f6a5e8c5a8cbf825170b30d9279f19cefc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
use super::prelude::*;
use crate::protocol::common::hex::decode_bin_buf;
#[derive(Debug)]
pub struct X<'a> {
pub addr: &'a [u8],
pub len: usize,
pub val: &'a [u8],
}
impl<'a> ParseCommand<'a> for X<'a> {
#[inline(always)]
fn from_packet(buf: PacketBuf<'a>) -> Option<Self> {
let body = buf.into_body();
let mut body = body.splitn_mut(3, |&b| b == b',' || b == b':');
let addr = decode_hex_buf(body.next()?).ok()?;
let len = decode_hex(body.next()?).ok()?;
let val = decode_bin_buf(body.next()?)?;
Some(X { addr, len, val })
}
}
|