blueprint_networking/
types.rs1use libp2p::{PeerId, gossipsub::IdentTopic};
2use serde::{Deserialize, Serialize};
3use std::fmt::Display;
4
5pub const MAX_MESSAGE_SIZE: usize = 16 * 1024 * 1024;
7
8#[derive(Debug, Clone)]
10pub enum MessageDelivery {
11 Broadcast {
13 topic: IdentTopic,
15 },
16 Direct {
18 peer_id: PeerId,
20 },
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct MessageRouting {
26 pub message_id: u64,
28 pub round_id: u16,
30 pub sender: PeerId,
32 pub recipient: Option<PeerId>,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct ProtocolMessage {
39 pub protocol: String,
41 pub routing: MessageRouting,
43 pub payload: Vec<u8>,
45}
46
47impl Display for MessageRouting {
48 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
49 write!(
50 f,
51 "msg={} round={} from={} to={:?}",
52 self.message_id, self.round_id, self.sender, self.recipient
53 )
54 }
55}
56
57impl Display for ProtocolMessage {
58 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
59 write!(
60 f,
61 "[{}] {} payload_size={}",
62 self.protocol,
63 self.routing,
64 self.payload.len()
65 )
66 }
67}