1use crate::decode::LinkDecodeLevel;
2use crate::link::header::Header;
3
4pub(crate) struct LinkDisplay<'a> {
5 header: Header,
6 payload: &'a [u8],
7 level: LinkDecodeLevel,
8}
9
10impl<'a> LinkDisplay<'a> {
11 pub(crate) fn new(header: Header, payload: &'a [u8], level: LinkDecodeLevel) -> Self {
12 LinkDisplay {
13 header,
14 payload,
15 level,
16 }
17 }
18}
19
20impl<'a> std::fmt::Display for LinkDisplay<'a> {
21 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
22 if self.level.header_enabled() {
23 write!(
24 f,
25 "{:?} source: {} destination: {} payload: {} bytes",
26 self.header.control,
27 self.header.source.value(),
28 self.header.destination.value(),
29 self.payload.len()
30 )?;
31 }
32 if self.level.payload_enabled() {
33 crate::util::decode::format_bytes(f, self.payload)?;
34 }
35 Ok(())
36 }
37}