embassy_socket/tcp_server/
mod.rs

1use embassy_net::Stack;
2use crate::connection::socket_state::SocketState;
3use crate::tcp_server::callback::TcpServerCallBack;
4use crate::tcp_server::runner::TcpServerRunner;
5
6pub mod callback;
7pub mod runner;
8
9/// tcp server
10pub struct TcpServer<'d, const N: usize, const TX_SZ: usize, const RX_SZ: usize, const BUF_SIZE: usize, CB: TcpServerCallBack> {
11    /// tcp server runner
12    runner: TcpServerRunner<'d, N, TX_SZ, RX_SZ, BUF_SIZE, CB>,
13}
14
15/// custom method
16impl<'d, const N: usize, const TX_SZ: usize, const RX_SZ: usize, const BUF_SIZE: usize, CB: TcpServerCallBack>
17TcpServer<'d, N, TX_SZ, RX_SZ, BUF_SIZE, CB> {
18    /// create tcp server
19    #[inline]
20    pub fn new(stack: Stack<'d>, state: &'d SocketState<N, TX_SZ, RX_SZ, BUF_SIZE>, port: u16, cb: &'d CB) -> Self {
21        Self { runner: TcpServerRunner::new(stack, state, port, cb) }
22    }
23
24    /// create runner<br />
25    /// it is recommended to only create N at most, and each representative you create can listen to one connection
26    #[inline]
27    pub fn create(&self) -> TcpServerRunner<'d, N, TX_SZ, RX_SZ, BUF_SIZE, CB> {
28        self.runner
29    }
30}