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