hopr_protocol_hopr/
types.rs1use hopr_crypto_packet::prelude::*;
2use hopr_crypto_types::prelude::*;
3use hopr_internal_types::prelude::*;
4
5pub struct OutgoingPacket {
7 pub next_hop: OffchainPublicKey,
9 pub ack_challenge: HalfKeyChallenge,
11 pub data: Box<[u8]>,
13}
14
15impl std::fmt::Debug for OutgoingPacket {
16 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
17 f.debug_struct("OutgoingPacket")
18 .field("next_hop", &self.next_hop)
19 .field("ack_challenge", &self.ack_challenge)
20 .finish_non_exhaustive()
21 }
22}
23
24#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
26pub struct AuxiliaryPacketInfo {
27 pub packet_signals: PacketSignals,
31 pub num_surbs: usize,
33}
34
35pub struct IncomingFinalPacket {
37 pub packet_tag: PacketTag,
39 pub previous_hop: OffchainPublicKey,
41 pub sender: HoprPseudonym,
43 pub plain_text: Box<[u8]>,
45 pub ack_key: HalfKey,
47 pub info: AuxiliaryPacketInfo,
49}
50
51impl std::fmt::Debug for IncomingFinalPacket {
52 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
53 f.debug_struct("IncomingFinalPacket")
54 .field("packet_tag", &self.packet_tag)
55 .field("previous_hop", &self.previous_hop)
56 .field("sender", &self.sender)
57 .field("ack_key", &self.ack_key)
58 .field("info", &self.info)
59 .finish_non_exhaustive()
60 }
61}
62
63pub struct IncomingForwardedPacket {
65 pub packet_tag: PacketTag,
67 pub previous_hop: OffchainPublicKey,
69 pub next_hop: OffchainPublicKey,
71 pub data: Box<[u8]>,
73 pub ack_challenge: HalfKeyChallenge,
75 pub received_ticket: UnacknowledgedTicket,
77 pub ack_key_prev_hop: HalfKey,
79}
80
81impl std::fmt::Debug for IncomingForwardedPacket {
82 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
83 f.debug_struct("IncomingForwardedPacket")
84 .field("packet_tag", &self.packet_tag)
85 .field("previous_hop", &self.previous_hop)
86 .field("next_hop", &self.next_hop)
87 .field("received_ticket", &self.received_ticket)
88 .field("ack_challenge", &self.ack_challenge)
89 .field("ack_key_prev_hop", &self.ack_key_prev_hop)
90 .finish_non_exhaustive()
91 }
92}
93
94pub struct IncomingAcknowledgementPacket {
96 pub packet_tag: PacketTag,
98 pub previous_hop: OffchainPublicKey,
100 pub received_ack: Acknowledgement,
102}
103
104impl std::fmt::Debug for IncomingAcknowledgementPacket {
105 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
106 f.debug_struct("IncomingAcknowledgementPacket")
107 .field("packet_tag", &self.packet_tag)
108 .field("previous_hop", &self.previous_hop)
109 .field("ack", &self.received_ack)
110 .finish()
111 }
112}
113
114#[derive(Debug)]
116pub enum IncomingPacket {
117 Final(Box<IncomingFinalPacket>),
119 Forwarded(Box<IncomingForwardedPacket>),
121 Acknowledgement(Box<IncomingAcknowledgementPacket>),
123}
124
125impl IncomingPacket {
126 pub fn packet_tag(&self) -> &PacketTag {
128 match self {
129 IncomingPacket::Final(f) => &f.packet_tag,
130 IncomingPacket::Forwarded(f) => &f.packet_tag,
131 IncomingPacket::Acknowledgement(f) => &f.packet_tag,
132 }
133 }
134
135 pub fn previous_hop(&self) -> &OffchainPublicKey {
137 match self {
138 IncomingPacket::Final(f) => &f.previous_hop,
139 IncomingPacket::Forwarded(f) => &f.previous_hop,
140 IncomingPacket::Acknowledgement(f) => &f.previous_hop,
141 }
142 }
143}
144
145#[derive(Debug)]
147pub struct FoundSurb {
148 pub sender_id: HoprSenderId,
150 pub surb: HoprSurb,
152 pub remaining: usize,
154}
155
156#[derive(Debug)]
158pub enum ResolvedAcknowledgement {
159 RelayingWin(Box<RedeemableTicket>),
161 RelayingLoss(ChannelId),
163}