Skip to content

Commit b041d83

Browse files
committed
fix: attributes, tracing
1 parent 41dd23a commit b041d83

File tree

3 files changed

+48
-24
lines changed

3 files changed

+48
-24
lines changed

src/mvd/mod.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use serde::Serialize;
2-
use paste::paste;
32
use crate::protocol::message::Message;
43
use crate::protocol::message::MessageFlags;
54
use crate::protocol::message::MessageType;
@@ -12,7 +11,7 @@ use crate::utils::ascii_converter::AsciiConverter;
1211
use crate::protocol::message::trace::*;
1312

1413

15-
#[derive(Serialize, Clone, PartialEq, Debug, PartialOrd)]
14+
#[derive(Serialize, Clone, PartialEq, Eq, Debug, PartialOrd)]
1615
pub struct MvdTarget {
1716
pub to: u32,
1817
pub command: DemoCommand,
@@ -224,7 +223,6 @@ impl Mvd {
224223
frame.messages.push(ServerMessage::Serverdata(r.clone()));
225224
self.message.flags.fte_protocol_extensions = r.fte_protocol_extension;
226225
self.message.flags.fte_protocol_extensions_2 = r.fte_protocol_extension_2;
227-
self.message.flags = self.message.flags;
228226
}
229227
_ => {
230228
frame.messages.push(ret);

src/protocol/types.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1844,6 +1844,7 @@ macro_rules! initialize_message_type {
18441844
($($ty:ident), *) => {
18451845
paste! {
18461846
#[derive(Debug, PartialEq, PartialOrd, Display, Serialize, Clone)]
1847+
#[non_exhaustive]
18471848
pub enum ServerMessage {
18481849
$(
18491850
[< $ty >]([< $ty >]),

src/utils/trace.rs

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ fn fg_color_increase_mut(color_in: &mut u8) {
5757
fn bg_color_increase_mut(color_in: &mut u8) {
5858
let min = 52;
5959
let max = 63;
60-
let mut color = color_in.clone();
60+
let mut color = *color_in;
6161
if color < min {
6262
color = min;
6363
} else {
@@ -69,26 +69,38 @@ fn bg_color_increase_mut(color_in: &mut u8) {
6969
*color_in = color;
7070
}
7171

72-
fn print_recursive(message: &Message, traces: &ReadTrace,full_message: bool, indent: u32, bg_color: u8, fg_color: u8, min_depth: u32, max_depth: u32) -> Result<(), Box<dyn Error>> {
72+
#[derive(Clone, Debug)]
73+
struct RecursivePrintFlags {
74+
full: bool, // print full message
75+
indent: u32, // indentation level
76+
min_depth: u32, // minimum level for printing
77+
max_depth: u32, // maximum level for printing
78+
fg_color: u8, // foreground color
79+
bg_color: u8, // background color
80+
}
81+
82+
fn print_recursive(message: &Message, traces: &ReadTrace, flags: &mut RecursivePrintFlags) /* full_message: bool, indent: u32, bg_color: u8, fg_color: u8, min_depth: u32, max_depth: u32)*/ -> Result<(), Box<dyn Error>> {
7383

74-
if indent >= max_depth {
84+
if flags.indent >= flags.max_depth {
7585
return Ok(());
7686
}
7787

78-
if indent >= min_depth {
88+
if flags.indent >= flags.min_depth {
7989
for inner_trace in &traces.read {
80-
if inner_trace.read.len() == 0 {
90+
if inner_trace.read.is_empty() {
8191
continue;
8292
}
83-
print_recursive(message, &inner_trace, full_message, indent + 1, bg_color, fg_color, min_depth, max_depth)?;
93+
let mut r_flags = flags.clone();
94+
r_flags.indent += 1;
95+
print_recursive(message, inner_trace, &mut r_flags)?;
8496
}
8597
}
8698

8799
let mut stdout = StandardStream::stdout(ColorChoice::Always);
88100
let trace = traces;
89-
let bg_color = bg_color_increase(bg_color);
90-
let mut fg_color = fg_color_increase(fg_color);
91-
let mut initial_color = fg_color;
101+
let bg_color = bg_color_increase(flags.bg_color);
102+
let mut fg_color = fg_color_increase(flags.fg_color);
103+
let mut initial_color = flags.fg_color;
92104

93105
let types: Vec<(usize, usize, u8)> = trace.read.clone().into_iter()
94106
.map(|read| {
@@ -102,15 +114,15 @@ fn print_recursive(message: &Message, traces: &ReadTrace,full_message: bool, ind
102114
color_spec.set_bg(Some(Color::Black));
103115
stdout.set_color(&color_spec)?;
104116

105-
let s = format!("{:width$}", "", width=indent as usize);
117+
let s = format!("{:width$}", "", width=flags.indent as usize);
106118
if trace.annotation.is_some() {
107119
let m = trace.annotation.clone();
108120
println!("{}{} {} {} {}", s, trace.function, m.unwrap(), trace.start, trace.stop);
109121
} else {
110122
println!("{}{} {} {}", s, trace.function, trace.start, trace.stop);
111123
}
112124

113-
let indent = indent +1;
125+
let indent = flags.indent +1;
114126

115127
for trace in &traces.read {
116128
if trace.readahead {
@@ -131,7 +143,7 @@ fn print_recursive(message: &Message, traces: &ReadTrace,full_message: bool, ind
131143

132144
let ascii_converter = AsciiConverter::new();
133145
let mut ascii_types: Vec<(u8, u8)> = vec![];
134-
if types.len() > 0 {
146+
if !types.is_empty() {
135147
let mut type_iter = types.iter();
136148
let mut current_type = type_iter.next().unwrap_or(&(0, 0, 0));
137149
let mut char_count = 0;
@@ -161,10 +173,11 @@ fn print_recursive(message: &Message, traces: &ReadTrace,full_message: bool, ind
161173

162174
let (_, stop, _) = current_type;
163175
if stop <= &count {
164-
let ct = type_iter.next();
165-
if ct.is_some() {
166-
current_type = ct.unwrap();
167-
}
176+
current_type = if let Some(current_type) = type_iter.next() {
177+
current_type
178+
} else {
179+
current_type
180+
};
168181
}
169182
let (_, _, color) = current_type;
170183
color_spec.set_fg(Some(Color::Ansi256(*color)));
@@ -180,7 +193,7 @@ fn print_recursive(message: &Message, traces: &ReadTrace,full_message: bool, ind
180193
write!(&mut stdout, "{}", *chr as char)?;
181194
}
182195
ascii_types.clear();
183-
write!(&mut stdout, " \n")?;
196+
writeln!(&mut stdout, " ")?;
184197
char_count = 0;
185198
} else {
186199
char_count +=1;
@@ -193,17 +206,29 @@ fn print_recursive(message: &Message, traces: &ReadTrace,full_message: bool, ind
193206
writeln!(&mut stdout)?;
194207

195208
for inner_trace in &trace.read {
196-
if inner_trace.read.len() == 0 {
209+
if inner_trace.read.is_empty() {
197210
continue;
198211
}
199-
print_recursive(message, &inner_trace, full_message, indent + 1, bg_color, fg_color, min_depth, max_depth)?;
212+
let mut f = flags.clone();
213+
f.indent += 1;
214+
f.fg_color = fg_color;
215+
f.bg_color = bg_color;
216+
print_recursive(message, inner_trace, &mut f)?;
200217
}
201-
return Ok(());
218+
Ok(())
202219
}
203220

204221
pub fn print_message_trace(message: &Message, full_message: bool, min_depth: u32, max_depth: u32) -> Result<(), Box<dyn Error>> {
222+
let flags = RecursivePrintFlags {
223+
full: full_message,
224+
indent: 0,
225+
min_depth,
226+
max_depth,
227+
fg_color: 0,
228+
bg_color: 0
229+
};
205230
for trace in &message.trace.read {
206-
print_recursive(message, &trace, full_message, 0, 0, 0, min_depth, max_depth)?;
231+
print_recursive(message, trace, &mut flags.clone())?;
207232
}
208233
Ok(())
209234
}

0 commit comments

Comments
 (0)