p2p/channels/signaling/exchange/
p2p_channels_signaling_exchange_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 P2pChannelsSignalingExchangeState {
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: SignalingExchangeState,
20 remote: SignalingExchangeState,
22 },
23}
24
25#[derive(Serialize, Deserialize, Debug, Clone)]
26pub enum SignalingExchangeState {
27 WaitingForRequest {
29 time: redux::Timestamp,
30 },
31 Requested {
34 time: redux::Timestamp,
35 },
36 Offered {
37 time: redux::Timestamp,
38 offerer_pub_key: PublicKey,
39 },
40 Answered {
41 time: redux::Timestamp,
42 },
43}
44
45impl P2pChannelsSignalingExchangeState {
46 pub fn is_ready(&self) -> bool {
47 matches!(self, Self::Ready { .. })
48 }
49}