use crate::const_config::{
DEFAULT_CHANNEL_SIZE, DEFAULT_CHECK_HEART_INTERVAL, DEFAULT_CHECK_HEART_TIMEOUT_TIME,
DEFAULT_IPV4, DEFAULT_MAX_CONNECTIONS, DEFAULT_MAX_RECEIVE_BYTES_SIZE,
DEFAULT_MAX_THREADPOOL_SIZE, DEFAULT_MESSAGE_HEADER_MARK, DEFAULT_MESSAGE_TAIL_MARK,
DEFAULT_PROCESS_PERMIT_SIZE,
};
#[cfg(feature = "server")]
pub struct LynnServerConfig<'a> {
server_ipv4: &'a str,
server_single_channel_size: &'a usize,
server_max_connections: Option<&'a usize>,
server_max_threadpool_size: &'a usize,
server_max_receive_bytes_reader_size: &'a usize,
server_single_processs_permit: &'a usize,
server_check_heart_interval: &'a u64,
server_check_heart_timeout_time: &'a u64,
message_header_mark: &'a u16,
message_tail_mark: &'a u16,
}
impl<'a> LynnServerConfig<'a> {
fn new(
server_ipv4: &'a str,
server_single_channel_size: &'a usize,
server_max_connections: Option<&'a usize>,
server_max_threadpool_size: &'a usize,
server_max_receive_bytes_reader_size: &'a usize,
server_single_processs_permit: &'a usize,
server_check_heart_interval: &'a u64,
server_check_heart_timeout_time: &'a u64,
message_header_mark: &'a u16,
message_tail_mark: &'a u16,
) -> Self {
Self {
server_ipv4,
server_max_connections,
server_max_threadpool_size,
server_max_receive_bytes_reader_size,
server_single_channel_size,
server_single_processs_permit,
server_check_heart_interval,
server_check_heart_timeout_time,
message_header_mark,
message_tail_mark,
}
}
pub(crate) fn default() -> Self {
Self {
server_ipv4: DEFAULT_IPV4,
server_max_connections: Some(&DEFAULT_MAX_CONNECTIONS),
server_max_threadpool_size: &DEFAULT_MAX_THREADPOOL_SIZE,
server_max_receive_bytes_reader_size: &DEFAULT_MAX_RECEIVE_BYTES_SIZE,
server_single_channel_size: &DEFAULT_CHANNEL_SIZE,
server_single_processs_permit: &DEFAULT_PROCESS_PERMIT_SIZE,
server_check_heart_interval: &DEFAULT_CHECK_HEART_INTERVAL,
server_check_heart_timeout_time: &DEFAULT_CHECK_HEART_TIMEOUT_TIME,
message_header_mark: &DEFAULT_MESSAGE_HEADER_MARK,
message_tail_mark: &DEFAULT_MESSAGE_TAIL_MARK,
}
}
pub(crate) fn get_server_ipv4(&self) -> &str {
&self.server_ipv4
}
pub(crate) fn get_server_single_channel_size(&self) -> &usize {
&self.server_single_channel_size
}
pub(crate) fn get_server_single_processs_permit(&self) -> &usize {
self.server_single_processs_permit
}
pub(crate) fn get_server_check_heart_interval(&self) -> &u64 {
self.server_check_heart_interval
}
pub(crate) fn get_server_check_heart_timeout_time(&self) -> &u64 {
self.server_check_heart_timeout_time
}
pub(crate) fn get_server_max_connections(&self) -> Option<&usize> {
self.server_max_connections
}
pub(crate) fn get_server_max_threadpool_size(&self) -> &usize {
self.server_max_threadpool_size
}
pub(crate) fn get_server_max_receive_bytes_reader_size(&self) -> &usize {
self.server_max_receive_bytes_reader_size
}
pub(crate) fn get_message_header_mark(&self) -> &u16 {
self.message_header_mark
}
pub(crate) fn get_message_tail_mark(&self) -> &u16 {
self.message_tail_mark
}
}
#[cfg(feature = "server")]
pub struct LynnServerConfigBuilder<'a> {
pub lynn_config: LynnServerConfig<'a>,
}
impl<'a> LynnServerConfigBuilder<'a> {
pub fn new() -> Self {
Self {
lynn_config: LynnServerConfig::default(),
}
}
pub fn with_server_ipv4(mut self, server_ipv4: &'a str) -> Self {
self.lynn_config.server_ipv4 = server_ipv4;
self
}
pub fn with_server_single_channel_size(
mut self,
server_single_channel_size: &'a usize,
) -> Self {
self.lynn_config.server_single_channel_size = server_single_channel_size;
self
}
pub fn with_server_single_processs_permit(
mut self,
server_single_processs_permit: &'a usize,
) -> Self {
self.lynn_config.server_single_processs_permit = server_single_processs_permit;
self
}
pub fn with_server_check_heart_interval(
mut self,
server_check_heart_interval: &'a u64,
) -> Self {
self.lynn_config.server_check_heart_interval = server_check_heart_interval;
self
}
pub fn with_server_check_heart_timeout_time(
mut self,
server_check_heart_timeout_time: &'a u64,
) -> Self {
self.lynn_config.server_check_heart_timeout_time = server_check_heart_timeout_time;
self
}
pub fn with_server_max_connections(
mut self,
server_max_connections: Option<&'a usize>,
) -> Self {
self.lynn_config.server_max_connections = server_max_connections;
self
}
pub fn with_server_max_threadpool_size(
mut self,
server_max_threadpool_size: &'a usize,
) -> Self {
self.lynn_config.server_max_threadpool_size = server_max_threadpool_size;
self
}
pub fn with_server_max_receive_bytes_reader_size(
mut self,
server_max_receive_bytes_reader_size: &'a usize,
) -> Self {
self.lynn_config.server_max_receive_bytes_reader_size =
server_max_receive_bytes_reader_size;
self
}
pub fn build(self) -> LynnServerConfig<'a> {
self.lynn_config
}
pub(crate) fn with_message_header_mark(mut self, msg_header_mark: &'a u16) -> Self {
self.lynn_config.message_header_mark = msg_header_mark;
self
}
pub(crate) fn with_message_tail_mark(mut self, msg_tail_mark: &'a u16) -> Self {
self.lynn_config.message_tail_mark = msg_tail_mark;
self
}
}