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}