aboutsummaryrefslogtreecommitdiffstats
path: root/src/event.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/event.rs')
-rw-r--r--src/event.rs30
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,
+}