• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use super::prelude::*;
2 
3 use crate::protocol::common::thread_id::ThreadId;
4 use crate::protocol::ConcreteThreadId;
5 
6 #[derive(Debug)]
7 pub struct qThreadExtraInfo<'a> {
8     pub id: ConcreteThreadId,
9 
10     pub buf: &'a mut [u8],
11 }
12 
13 impl<'a> ParseCommand<'a> for qThreadExtraInfo<'a> {
14     #[inline(always)]
from_packet(buf: PacketBuf<'a>) -> Option<Self>15     fn from_packet(buf: PacketBuf<'a>) -> Option<Self> {
16         let (buf, body_range) = buf.into_raw_buf();
17         let body = buf.get(body_range.start..body_range.end)?;
18 
19         if body.is_empty() {
20             return None;
21         }
22 
23         match body {
24             [b',', body @ ..] => {
25                 let id = ConcreteThreadId::try_from(ThreadId::try_from(body).ok()?).ok()?;
26 
27                 Some(qThreadExtraInfo { id, buf })
28             }
29             _ => None,
30         }
31     }
32 }
33