dnp3/transport/real/
display.rs1use crate::decode::TransportDecodeLevel;
2use crate::transport::real::header::Header;
3
4pub(crate) struct SegmentDisplay<'a> {
5 pub(crate) header: Header,
6 pub(crate) payload: &'a [u8],
7 level: TransportDecodeLevel,
8}
9
10impl<'a> SegmentDisplay<'a> {
11 pub(crate) fn new(header: Header, payload: &'a [u8], level: TransportDecodeLevel) -> Self {
12 Self {
13 header,
14 payload,
15 level,
16 }
17 }
18}
19
20impl<'a> std::fmt::Display for SegmentDisplay<'a> {
21 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
22 if self.level.header_enabled() {
23 write!(
24 f,
25 "FIN: {} FIR: {} SEQ: {} length: {}",
26 self.header.fin,
27 self.header.fir,
28 self.header.seq.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}