doip_sockets/tcp/
tcp_listener.rs

1use std::{io, net::SocketAddr};
2use tokio::net::TcpListener as TokioTcpListener;
3
4use super::TcpStream;
5
6/// A TCP socket server, listening for connections
7pub struct TcpListener {
8    io: TokioTcpListener,
9}
10
11impl TcpListener {
12    /// Initialised a new TcpListener
13    pub fn new(io: TokioTcpListener) -> Self {
14        TcpListener { io }
15    }
16
17    /// Accepts an new incoming connection from the listener
18    pub async fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> {
19        let (stream, addr) = self.io.accept().await?;
20
21        Ok((TcpStream::new(stream), addr))
22    }
23
24    /// Retruns the reference for the internal listener
25    pub fn get_ref(&self) -> &TokioTcpListener {
26        &self.io
27    }
28}