use crate::*;
impl Default for ServerConfigData {
#[inline(always)]
fn default() -> Self {
Self {
host: DEFAULT_HOST.to_owned(),
port: DEFAULT_PORT,
buffer_size: DEFAULT_BUFFER_SIZE,
}
}
}
impl Default for ServerConfig {
#[inline(always)]
fn default() -> Self {
Self(Arc::new(RwLock::new(ServerConfigData::default())))
}
}
impl ServerConfig {
#[inline(always)]
pub fn new() -> Self {
Self::default()
}
pub(crate) async fn read(&self) -> ArcRwLockReadGuard<'_, ServerConfigData> {
self.0.read().await
}
pub(crate) async fn write(&self) -> ArcRwLockWriteGuard<'_, ServerConfigData> {
self.0.write().await
}
pub(crate) async fn get_data(&self) -> ServerConfigData {
self.read().await.clone()
}
pub async fn get_host(&self) -> String {
self.read().await.host.clone()
}
pub async fn get_port(&self) -> u16 {
self.read().await.port
}
pub async fn get_buffer_size(&self) -> usize {
self.read().await.buffer_size
}
pub async fn host<H>(&self, host: H) -> &Self
where
H: Into<String>,
{
self.write().await.host = host.into();
self
}
pub async fn port(&self, port: u16) -> &Self {
self.write().await.port = port;
self
}
pub async fn buffer_size(&self, buffer_size: usize) -> &Self {
self.write().await.buffer_size = buffer_size;
self
}
}