Skip to main content

antenna_protocol/state/
message.rs

1use 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}