thru_base/
tn_block_packet.rs

1use log::info;
2
3pub const MESSAGE_TYPE_BLOCK_PACKET: u64 = 0xBB;
4pub const BLOCK_PACKET_HAS_HEADER: u8 = 0x01;
5pub const BLOCK_PACKET_HAS_FOOTER: u8 = 0x02;
6pub const BLOCK_PACKET_VERSION_V1: u8 = 0x01;
7
8#[repr(C, packed)]
9pub struct TnBlockPacket {
10    pub block_header_sig: [u8; 64],
11    pub block_packet_version: u8,
12    pub flags: u8,
13    pub offset: u32,
14    //pub payload: [u8],
15}
16
17impl TnBlockPacket {
18    pub fn log_packet_info(&self) {
19        let has_header = (self.flags & BLOCK_PACKET_HAS_HEADER) != 0;
20        let has_footer = (self.flags & BLOCK_PACKET_HAS_FOOTER) != 0;
21        let offset = self.offset;
22        let first_sig_u64 = u64::from_le_bytes(self.block_header_sig[0..8].try_into().unwrap());
23
24        info!(
25            "TnBlockPacket - version: {}, flags: 0x{:02x} (header: {}, footer: {}), offset: {}, first_sig_u64: {}",
26            self.block_packet_version, self.flags, has_header, has_footer, offset, first_sig_u64
27        );
28    }
29}