antenna_protocol/state/
message.rs1use serde::{Deserialize, Serialize, de::DeserializeOwned};
2
3use crate::{PeerID, SignalingPayload};
4
5pub trait UserMsgPayload: Serialize + DeserializeOwned + Clone {}
6
7impl<T> UserMsgPayload for T where T: Serialize + DeserializeOwned + Clone {}
8
9#[derive(Clone, Serialize, Deserialize, Debug)]
10pub enum RelayPayload {
11 InitConnect(PeerID),
12 Offer(SignalingPayload),
13 Answer(SignalingPayload),
14}
15
16#[derive(Clone, Serialize, Deserialize, Debug)]
17#[serde(bound(serialize = "Msg: Serialize", deserialize = "Msg: DeserializeOwned"))]
18pub enum MsgPayload<Msg: UserMsgPayload> {
19 User(Msg),
20 RelaySignalingTo { dst: PeerID, data: RelayPayload },
21 RelaySignalingFrom { src: PeerID, data: RelayPayload },
22 Disconnect,
23}