Skip to main content

msrt_udp/
event.rs

1//! UDP adapter events.
2
3use std::io::ErrorKind;
4use std::net::SocketAddr;
5
6use msrt::endpoint::{MessageEvent, SendFailedEvent};
7
8/// High-level event produced by a UDP client.
9#[derive(Clone, Copy, Debug, Eq, PartialEq)]
10pub enum UdpClientEvent {
11    /// A complete application message was received.
12    Message(MessageEvent),
13    /// Reliable send failed.
14    SendFailed(SendFailedEvent),
15    /// The connected UDP peer is currently unreachable.
16    ///
17    /// This is a recoverable transport condition, such as a restarted server
18    /// causing ICMP port-unreachable feedback on connected UDP sockets.
19    TransportUnavailable {
20        /// Underlying socket error kind.
21        kind: ErrorKind,
22    },
23    /// No action is currently pending.
24    Idle,
25}
26
27/// High-level event produced by a UDP server.
28#[derive(Clone, Copy, Debug, Eq, PartialEq)]
29pub enum UdpServerEvent {
30    /// A complete application message was received from a peer.
31    Message {
32        /// Peer address that sent the message.
33        peer: SocketAddr,
34        /// Reassembled MSRT message.
35        message: MessageEvent,
36    },
37    /// Reliable send failed for a peer.
38    SendFailed {
39        /// Peer address whose send failed.
40        peer: SocketAddr,
41        /// Send failure details.
42        failed: SendFailedEvent,
43    },
44    /// No action is currently pending.
45    Idle,
46}