diff options
Diffstat (limited to 'src/event.rs')
| -rw-r--r-- | src/event.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/event.rs b/src/event.rs new file mode 100644 index 0000000..df7295d --- /dev/null +++ b/src/event.rs @@ -0,0 +1,30 @@ +//! Event types for typed callback integration. +//! +//! Alternative to `Box<dyn Fn>` callbacks. Applications +//! can receive events via `std::sync::mpsc::Receiver`. + +use crate::id::NodeId; +use crate::rdp::{RdpAddr, RdpEvent}; + +/// Events emitted by a Node. +#[derive(Debug, Clone)] +pub enum NodeEvent { + /// Datagram received from a peer. + DgramReceived { data: Vec<u8>, from: NodeId }, + + /// RDP event on a connection. + Rdp { + desc: i32, + addr: RdpAddr, + event: RdpEvent, + }, + + /// Peer added to routing table. + PeerAdded(NodeId), + + /// Value stored via DHT STORE. + ValueStored { key: Vec<u8> }, + + /// Node shutdown initiated. + Shutdown, +} |