engineio_rs/server/
builder.rs1use std::sync::Arc;
2
3use tokio::sync::{mpsc::channel, Mutex};
4
5use crate::server::{server::ServerInner, Server, ServerOption};
6
7pub struct ServerBuilder {
8 port: u16,
9 server_option: ServerOption,
10 polling_buffer: usize,
11 event_size: usize,
12}
13
14impl ServerBuilder {
15 pub fn new(port: u16) -> Self {
16 Self {
17 port,
18 server_option: Default::default(),
19 polling_buffer: 100,
20 event_size: 1000,
21 }
22 }
23
24 pub fn server_option(mut self, server_option: ServerOption) -> Self {
25 self.server_option = server_option;
26 self
27 }
28
29 pub fn polling_buffer(mut self, polling_buffer: usize) -> Self {
30 self.polling_buffer = polling_buffer;
31 self
32 }
33
34 pub fn event_size(mut self, event_size: usize) -> Self {
35 self.event_size = event_size;
36 self
37 }
38
39 pub fn build(self) -> Server {
40 let (event_tx, event_rx) = channel(self.event_size);
41 Server {
42 inner: Arc::new(ServerInner {
43 port: self.port,
44 server_option: self.server_option,
45 id_generator: Default::default(),
46 sockets: Default::default(),
47 polling_handles: Default::default(),
48 polling_buffer: self.polling_buffer,
49 event_tx: Arc::new(event_tx),
50 event_rx: Arc::new(Mutex::new(event_rx)),
51 }),
52 }
53 }
54}