mip_client/client/
events.rs1use std::sync::Arc;
2
3use crate::protocol::header::Header;
4use super::types::{MIPError, MIPMessage};
5
6pub type OnConnect = Arc<dyn Fn() + Send + Sync>;
12
13pub type OnDisconnect = Arc<dyn Fn() + Send + Sync>;
15
16pub type OnReconnecting = Arc<dyn Fn(u32) + Send + Sync>;
18
19pub type OnMessage = Arc<dyn Fn(MIPMessage) + Send + Sync>;
21
22pub type OnEvent = Arc<dyn Fn(MIPMessage) + Send + Sync>;
24
25pub type OnAck = Arc<dyn Fn(u64) + Send + Sync>;
27
28pub type OnPong = Arc<dyn Fn() + Send + Sync>;
30
31pub type OnError = Arc<dyn Fn(MIPError) + Send + Sync>;
33
34pub type OnFrame = Arc<dyn Fn(Header, Vec<u8>) + Send + Sync>;
36
37pub(crate) struct Callbacks {
43 pub on_connect: Vec<OnConnect>,
44 pub on_disconnect: Vec<OnDisconnect>,
45 pub on_reconnecting: Vec<OnReconnecting>,
46 pub on_message: Vec<OnMessage>,
47 pub on_event: Vec<OnEvent>,
48 pub on_ack: Vec<OnAck>,
49 pub on_pong: Vec<OnPong>,
50 pub on_error: Vec<OnError>,
51 pub on_frame: Vec<OnFrame>,
52}
53
54impl Default for Callbacks {
55 fn default() -> Self {
56 Self {
57 on_connect: Vec::new(),
58 on_disconnect: Vec::new(),
59 on_reconnecting: Vec::new(),
60 on_message: Vec::new(),
61 on_event: Vec::new(),
62 on_ack: Vec::new(),
63 on_pong: Vec::new(),
64 on_error: Vec::new(),
65 on_frame: Vec::new(),
66 }
67 }
68}