p2p/channels/signaling/discovery/
p2p_channels_signaling_discovery_state.rs

1use serde::{Deserialize, Serialize};
2
3use crate::identity::PublicKey;
4
5#[allow(clippy::large_enum_variant)]
6#[derive(Serialize, Deserialize, Debug, Clone)]
7pub enum P2pChannelsSignalingDiscoveryState {
8    Disabled,
9    Enabled,
10    Init {
11        time: redux::Timestamp,
12    },
13    Pending {
14        time: redux::Timestamp,
15    },
16    Ready {
17        time: redux::Timestamp,
18        /// We are the requestors here.
19        local: SignalingDiscoveryState,
20        /// We are the responders here.
21        remote: SignalingDiscoveryState,
22    },
23}
24
25#[derive(Serialize, Deserialize, Debug, Clone)]
26pub enum SignalingDiscoveryState {
27    WaitingForRequest {
28        time: redux::Timestamp,
29    },
30    Requested {
31        time: redux::Timestamp,
32    },
33    DiscoveryRequested {
34        time: redux::Timestamp,
35    },
36    Discovered {
37        time: redux::Timestamp,
38        target_public_key: PublicKey,
39    },
40    DiscoveredRejected {
41        time: redux::Timestamp,
42        target_public_key: PublicKey,
43    },
44    DiscoveredAccepted {
45        time: redux::Timestamp,
46        target_public_key: PublicKey,
47    },
48    Answered {
49        time: redux::Timestamp,
50    },
51}
52
53impl P2pChannelsSignalingDiscoveryState {
54    pub fn is_ready(&self) -> bool {
55        matches!(self, Self::Ready { .. })
56    }
57}