pyroscope_rbspy_oncpu/storage/
v0.rs1use crate::core::types::{Header, StackFrame, StackTrace};
2use std::io::prelude::*;
3use std::io::BufReader;
4
5use super::*;
6
7pub(crate) struct Data(Vec<Vec<StackFrame>>);
8
9impl Storage for Data {
10 fn from_reader<R: Read>(r: R) -> Result<Data> {
11 let reader = BufReader::new(r);
12 let mut result = Vec::new();
13 for line in reader.lines() {
14 let trace: Vec<StackFrame> = serde_json::from_str(&line?)?;
15 result.push(trace);
16 }
17 Ok(Data(result))
18 }
19 fn version() -> Version {
20 Version(0)
21 }
22}
23
24impl From<Data> for v2::Data {
25 fn from(d: Data) -> v2::Data {
26 let x: Vec<StackTrace> = d.0.into_iter().map(std::convert::Into::into).collect();
27 v2::Data {
28 header: Header {
29 sample_rate: None,
30 rbspy_version: None,
31 start_time: None,
32 },
33 traces: x,
34 }
35 }
36}
37
38impl From<Vec<StackFrame>> for StackTrace {
39 fn from(trace: Vec<StackFrame>) -> StackTrace {
40 StackTrace {
41 pid: None,
42 trace,
43 thread_id: None,
44 time: None,
45 }
46 }
47}