net_stream/server/
event.rs

1//! Server output event types.
2
3use super::peer_uid::PeerUid;
4use super::MessageTypes;
5use serde::Deserialize;
6use serde::Serialize;
7
8/// Server output event.
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
10pub enum Event<M: MessageTypes> {
11    /// New peer connected.
12    NewPeer(NewPeer),
13
14    /// TCP message received.
15    TcpMessage(Message<M::TcpToServer>),
16
17    /// UDP message received.
18    UdpMessage(Message<M::UdpToServer>),
19
20    /// Peer is disconnected.
21    PeerDisconnect(PeerDisconnect),
22}
23
24/// New peer connected.
25#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
26pub struct NewPeer {
27    /// Peer unique ID.
28    pub peer_uid: PeerUid,
29}
30
31/// Peer disconnect.
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
33pub struct PeerDisconnect {
34    /// Peer unique ID.
35    pub peer_uid: PeerUid,
36
37    /// Reason for disconnect.
38    pub disconnect_reason: DisconnectReason,
39}
40
41/// Reason for a peer disconnect.
42#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
43pub enum DisconnectReason {
44    /// Peer closed connection.
45    PeerClosedConnection,
46
47    /// Peer submitted unintelligble data that could not be decoded.
48    PeerSubmittedUnintelligibleData,
49}
50
51/// Received message from connected peer.
52#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
53pub struct Message<T> {
54    /// Sender.
55    pub from: PeerUid,
56
57    /// Message.
58    pub message: T,
59}