p2p/channels/signaling/discovery/
p2p_channels_signaling_discovery_state.rs1use 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 local: SignalingDiscoveryState,
20 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}