1use tokio::net::UdpSocket;
2
3use crate::*;
4
5pub type ArcUdpSocket = Arc<UdpSocket>;
6pub type OptionArcUdpSocket = Option<ArcUdpSocket>;
7pub type OptionArcRwLockUdpSocket = Option<ArcRwLockUdpSocket>;
8pub type RwLockReadGuardUdpSocket<'a> = RwLockReadGuard<'a, UdpSocket>;
9pub type RwLockWriteGuardUdpSocket<'a> = RwLockWriteGuard<'a, UdpSocket>;
10pub type ArcRwLockWriteGuardUdpSocket<'a> = Arc<RwLockWriteGuard<'a, UdpSocket>>;
11pub type OptionArcRwLockWriteGuardUdpSocket<'a> = Option<ArcRwLockWriteGuardUdpSocket<'a>>;
12pub type ArcMutexGuardUdpSocket<'a> = Arc<MutexGuard<'a, UdpSocket>>;
13pub type OptionArcMutexGuardUdpSocket<'a> = Option<ArcMutexGuardUdpSocket<'a>>;
14pub type OptionSocketHost = Option<IpAddr>;
15pub type OptionSocketPort = Option<u16>;
16pub type OptionSocketAddr = Option<SocketAddr>;
17
18#[derive(Clone, Debug)]
19pub struct ArcRwLockUdpSocket(pub(super) ArcRwLock<UdpSocket>);