use crate::*;
pub type ArcRwLock<T> = Arc<RwLock<T>>;
pub type ArcRwLockReadGuard<'a, T> = RwLockReadGuard<'a, T>;
pub type ArcRwLockWriteGuard<'a, T> = RwLockWriteGuard<'a, T>;
pub type HashMapArcAnySendSync = HashMap<String, Arc<dyn Any + Send + Sync>>;
pub type OptionSocketAddr = Option<SocketAddr>;
pub type OptionSocketHost = Option<std::net::IpAddr>;
pub type OptionSocketPort = Option<u16>;
pub type ResponseData = Vec<u8>;
pub type ResponseResult = Result<(), ResponseError>;
pub type ErrorHandleFn = dyn Fn(String) + Send + Sync;
pub type ArcErrorHandle = Arc<ErrorHandleFn>;
pub type ServerHookHandler =
Arc<dyn Fn(Context) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>> + Send + Sync>;
pub type ServerHookList = Vec<ServerHookHandler>;