1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use std::{collections::HashMap, fmt, fmt::Debug};
pub(crate) type ResponseMap = HashMap<u16, Response>;
#[derive(Default, Clone)]
pub struct Response {
stdout: Option<Vec<u8>>,
stderr: Option<Vec<u8>>,
}
impl Response {
pub(crate) fn set_stdout(&mut self, stdout: Vec<u8>) {
match self.stdout {
Some(ref mut buf) => buf.extend(stdout.iter()),
None => self.stdout = Some(stdout),
}
}
pub(crate) fn set_stderr(&mut self, stderr: Vec<u8>) {
match self.stderr {
Some(ref mut buf) => buf.extend(stderr.iter()),
None => self.stderr = Some(stderr),
}
}
pub fn get_stdout(&self) -> Option<Vec<u8>> {
self.stdout.clone()
}
pub fn get_stderr(&self) -> Option<Vec<u8>> {
self.stderr.clone()
}
}
impl Debug for Response {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
Debug::fmt(r#"Output { stdout: "...", stderr: "..." }"#, f)
}
}