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}