engineio-rs 0.1.5

An implementation of a engineio written in rust.
Documentation
use std::sync::Arc;

use tokio::sync::{mpsc::channel, Mutex};

use crate::server::{server::ServerInner, Server, ServerOption};

pub struct ServerBuilder {
    port: u16,
    server_option: ServerOption,
    polling_buffer: usize,
    event_size: usize,
}

impl ServerBuilder {
    pub fn new(port: u16) -> Self {
        Self {
            port,
            server_option: Default::default(),
            polling_buffer: 100,
            event_size: 1000,
        }
    }

    pub fn server_option(mut self, server_option: ServerOption) -> Self {
        self.server_option = server_option;
        self
    }

    pub fn polling_buffer(mut self, polling_buffer: usize) -> Self {
        self.polling_buffer = polling_buffer;
        self
    }

    pub fn event_size(mut self, event_size: usize) -> Self {
        self.event_size = event_size;
        self
    }

    pub fn build(self) -> Server {
        let (event_tx, event_rx) = channel(self.event_size);
        Server {
            inner: Arc::new(ServerInner {
                port: self.port,
                server_option: self.server_option,
                id_generator: Default::default(),
                sockets: Default::default(),
                polling_handles: Default::default(),
                polling_buffer: self.polling_buffer,
                event_tx: Arc::new(event_tx),
                event_rx: Arc::new(Mutex::new(event_rx)),
            }),
        }
    }
}