Skip to main content

antenna_protocol/state/
input.rs

1use crate::{
2    HandshakeMode, HandshakeStrategy, PeerID, Scheduled, UserMsgPayload, handshake::HandshakeInput,
3    state::MsgPayload,
4};
5
6/// Common event that client FSM receives
7#[derive(Debug, Clone)]
8pub enum Input<Msg: UserMsgPayload> {
9    /// Initiate a handshake with a known peer ID, choosing role and signaling mode.
10    InitHandshake {
11        with: PeerID,
12        mode: HandshakeMode,
13        strategy: HandshakeStrategy,
14    },
15
16    /// Bootstrap host initializes an open offer without knowing the joiner's ID yet.
17    InitOpenOffer,
18
19    /// Bootstrap host's SDP offer was created by WebRTC.
20    OpenOfferCreated(String),
21
22    /// Receive handshake event from a known peer
23    Handshake { from: PeerID, event: HandshakeInput },
24
25    /// Receive abstract message
26    MessageReceived {
27        peer_from: PeerID,
28        data: MsgPayload<Msg>,
29    },
30
31    /// Send abstract message to other peer
32    Send {
33        peer_to: PeerID,
34        data: MsgPayload<Msg>,
35    },
36
37    /// Send abstract message to all peers
38    Broadcast { data: MsgPayload<Msg> },
39
40    /// Receive peer leaving message
41    PeerLeaving { peer: PeerID },
42
43    /// The local node initiates departure from the mesh
44    Leave,
45
46    /// Driver-scheduled timer expired; FSM dispatches by kind.
47    TimerFired { kind: Scheduled },
48}