bee_network/service/
event.rs1use super::command::Command;
5
6use crate::{
7 network::origin::Origin,
8 peer::{error::Error as PeerError, info::PeerInfo},
9 swarm::protocols::iota_gossip::{GossipReceiver, GossipSender},
10};
11
12use libp2p::{swarm::NegotiatedSubstream, Multiaddr, PeerId};
13use tokio::sync::mpsc;
14
15pub type EventSender = mpsc::UnboundedSender<Event>;
16pub type EventReceiver = mpsc::UnboundedReceiver<Event>;
17pub type InternalEventReceiver = mpsc::UnboundedReceiver<InternalEvent>;
18pub type InternalEventSender = mpsc::UnboundedSender<InternalEvent>;
19
20pub fn event_channel<T>() -> (mpsc::UnboundedSender<T>, mpsc::UnboundedReceiver<T>) {
21 mpsc::unbounded_channel()
22}
23
24#[derive(Debug)]
26#[non_exhaustive]
27pub enum Event {
28 AddressBanned {
30 address: Multiaddr,
32 },
33
34 AddressUnbanned {
36 address: Multiaddr,
38 },
39
40 AddressBound {
42 address: Multiaddr,
44 },
45
46 CommandFailed {
48 command: Command,
50 reason: PeerError,
52 },
53
54 LocalIdCreated {
56 local_id: PeerId,
58 },
59
60 PeerAdded {
62 peer_id: PeerId,
64 info: PeerInfo,
66 },
67
68 PeerBanned {
70 peer_id: PeerId,
72 },
73
74 PeerConnected {
76 peer_id: PeerId,
78 info: PeerInfo,
80 gossip_in: GossipReceiver,
82 gossip_out: GossipSender,
84 },
85
86 PeerDisconnected {
88 peer_id: PeerId,
90 },
91
92 PeerRemoved {
94 peer_id: PeerId,
96 },
97
98 PeerUnbanned {
100 peer_id: PeerId,
102 },
103}
104
105#[derive(Debug)]
107pub enum InternalEvent {
108 AddressBound {
110 address: Multiaddr,
112 },
113
114 ProtocolEstablished {
116 peer_id: PeerId,
118 peer_addr: Multiaddr,
120 origin: Origin,
122 substream: Box<NegotiatedSubstream>,
124 },
125
126 ProtocolDropped { peer_id: PeerId },
128}
129
130pub struct NetworkEventReceiver(EventReceiver);
132
133impl NetworkEventReceiver {
134 pub(crate) fn new(inner: EventReceiver) -> Self {
135 Self(inner)
136 }
137
138 pub async fn recv(&mut self) -> Option<Event> {
140 self.0.recv().await
141 }
142}
143
144impl From<NetworkEventReceiver> for EventReceiver {
145 fn from(rx: NetworkEventReceiver) -> EventReceiver {
146 rx.0
147 }
148}