shared/models/node/
events.rs

1use crate::models::EventEmittingModel;
2use std::sync::LazyLock;
3
4#[non_exhaustive]
5pub enum NodeEvent {
6    /// Emitted when a node's token is reset.
7    TokenReset {
8        node: Box<super::Node>,
9        token_id: String,
10        token: String,
11    },
12    /// Emitted when wings restarts, the base panel uses this to fail backups and transfers in progress.
13    /// Importantly, the base panel does not use this for failing server installations, wings tries hard to resume those on restart.
14    StateReset { node: Box<super::Node> },
15}
16
17#[async_trait::async_trait]
18impl EventEmittingModel for super::Node {
19    type Event = NodeEvent;
20
21    fn get_event_emitter() -> &'static crate::events::EventEmitter<Self::Event> {
22        static EVENT_EMITTER: LazyLock<crate::events::EventEmitter<NodeEvent>> =
23            LazyLock::new(crate::events::EventEmitter::default);
24
25        &EVENT_EMITTER
26    }
27}