embassy_socket/
socket_build.rs1use core::net::Ipv4Addr;
2use embassy_net::Stack;
3use crate::connection::socket_state::SocketState;
4use crate::tcp_client::callback::TcpClientCallBack;
5use crate::tcp_client::TcpClient;
6use crate::tcp_server::callback::TcpServerCallBack;
7use crate::tcp_server::TcpServer;
8
9pub trait SocketBuilderTrait<'d, const N: usize, const TX_SZ: usize, const RX_SZ: usize, const BUF_SIZE: usize> {
11 fn build_tcp_client<CB: TcpClientCallBack>(self, ip: Ipv4Addr, port: u16, cb: CB, state: &'d SocketState<N, TX_SZ, RX_SZ, BUF_SIZE>) -> TcpClient<'d, N, TX_SZ, RX_SZ, BUF_SIZE, CB>;
13
14 fn build_tcp_server<CB: TcpServerCallBack>(self, state: &'d SocketState<N, TX_SZ, RX_SZ, BUF_SIZE>, port: u16, cb: &'d CB) -> TcpServer<'d, N, TX_SZ, RX_SZ, BUF_SIZE, CB>;
16}
17
18impl<'d, const N: usize, const TX_SZ: usize, const RX_SZ: usize, const BUF_SIZE: usize>
20SocketBuilderTrait<'d, N, TX_SZ, RX_SZ, BUF_SIZE>
21for Stack<'d> {
22 #[inline]
23 fn build_tcp_client<CB: TcpClientCallBack>(
24 self, ip: Ipv4Addr, port: u16, cb: CB, state: &'d SocketState<N, TX_SZ, RX_SZ, BUF_SIZE>)
25 -> TcpClient<'d, N, TX_SZ, RX_SZ, BUF_SIZE, CB> {
26 TcpClient::new(self, ip, port, cb, state)
27 }
28
29 #[inline]
30 fn build_tcp_server<CB: TcpServerCallBack>(
31 self, state: &'d SocketState<N, TX_SZ, RX_SZ, BUF_SIZE>, port: u16, cb: &'d CB)
32 -> TcpServer<'d, N, TX_SZ, RX_SZ, BUF_SIZE, CB> {
33 TcpServer::new(self, state, port, cb)
34 }
35}