use tokio::sync::broadcast;
#[derive(Debug, Clone)]
pub enum NodeEvent {
Started,
ShuttingDown,
PeerConnected {
peer_id: String,
},
PeerDisconnected {
peer_id: String,
},
DataStored {
address: String,
},
DataRetrieved {
address: String,
},
UpgradeAvailable {
version: String,
},
UpgradeStarted {
version: String,
},
UpgradeComplete {
version: String,
},
Error {
message: String,
},
}
pub type NodeEventsChannel = broadcast::Receiver<NodeEvent>;
pub type NodeEventsSender = broadcast::Sender<NodeEvent>;
#[must_use]
pub fn create_event_channel() -> (NodeEventsSender, NodeEventsChannel) {
broadcast::channel(256)
}