pub struct NetworkTap<T: AsFd, LOC> {
pub sock: Option<T>,
pub timeout: Duration,
pub cfg: Arc<ResolveConfEntry>,
pub _loc: PhantomData<LOC>,
}
Expand description
An instance of the socket/stream.
Fields§
§sock: Option<T>
Channel
timeout: Duration
Receive timeout
cfg: Arc<ResolveConfEntry>
Instance’s config
_loc: PhantomData<LOC>
Implementations§
Source§impl<T: AsFd, LOC> NetworkTap<T, LOC>
impl<T: AsFd, LOC> NetworkTap<T, LOC>
Sourcepub fn new(
resolver: Arc<ResolveConfEntry>,
timeout: Duration,
) -> CDnsResult<Box<NetworkTapType<LOC>>>where
NetworkTap<T, LOC>: SocketTap<LOC> + 'static,
pub fn new(
resolver: Arc<ResolveConfEntry>,
timeout: Duration,
) -> CDnsResult<Box<NetworkTapType<LOC>>>where
NetworkTap<T, LOC>: SocketTap<LOC> + 'static,
Creates new instance of network which is ‘tapped’ with SocketTap.
A socket is not initially connected and SocketTap::connect
should be called.
§Arguments
-
resolver_ip
- a ref to [IpAddr] which holds host address of the nameserver. -
resolver_port
- a port number binded by nameserver -
bind_addr
- a local address to bind the socket to
§Returns
-
CDnsResult - Ok with inner type Box dyn SocketTap
-
CDnsResult - Err with error description
Trait Implementations§
Source§impl SocketTap<TokioSocketBase> for NetworkTap<TcpStream, TokioSocketBase>
impl SocketTap<TokioSocketBase> for NetworkTap<TcpStream, TokioSocketBase>
Source§fn connect<'life0, 'async_trait>(
&'life0 mut self,
conn_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn connect<'life0, 'async_trait>(
&'life0 mut self,
conn_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Connects to the remote host.
Source§fn is_encrypted(&self) -> bool
fn is_encrypted(&self) -> bool
Tells if current instace is
encrypted
i.e [TcpTlsConnection] over [TcpStream].Source§fn is_tcp(&self) -> bool
fn is_tcp(&self) -> bool
Tells if current instance is [TcpStream] if true, or [UdpSocket] if false
fn should_append_len(&self) -> bool
fn poll_read<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn send<'life0, 'life1, 'async_trait>(
&'life0 mut self,
sndbuf: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn send<'life0, 'life1, 'async_trait>(
&'life0 mut self,
sndbuf: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends data over wire.
Source§fn recv<'life0, 'life1, 'async_trait>(
&'life0 mut self,
rcvbuf: &'life1 mut [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn recv<'life0, 'life1, 'async_trait>(
&'life0 mut self,
rcvbuf: &'life1 mut [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Receives data transmitted from remote host.
In nonblocking mode it should be called only after the event was polled
In blocking mode it will block until received or timeout.
Source§impl SocketTap<TokioSocketBase> for NetworkTap<TcpTlsConnection, TokioSocketBase>
impl SocketTap<TokioSocketBase> for NetworkTap<TcpTlsConnection, TokioSocketBase>
Source§fn connect<'life0, 'async_trait>(
&'life0 mut self,
conn_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn connect<'life0, 'async_trait>(
&'life0 mut self,
conn_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Connects to the remote host.
Source§fn is_encrypted(&self) -> bool
fn is_encrypted(&self) -> bool
Tells if current instace is
encrypted
i.e [TcpTlsConnection] over [TcpStream].Source§fn is_tcp(&self) -> bool
fn is_tcp(&self) -> bool
Tells if current instance is [TcpStream] if true, or [UdpSocket] if false
fn should_append_len(&self) -> bool
fn poll_read<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn send<'life0, 'life1, 'async_trait>(
&'life0 mut self,
sndbuf: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn send<'life0, 'life1, 'async_trait>(
&'life0 mut self,
sndbuf: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends data over wire.
Source§fn recv<'life0, 'life1, 'async_trait>(
&'life0 mut self,
rcvbuf: &'life1 mut [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn recv<'life0, 'life1, 'async_trait>(
&'life0 mut self,
rcvbuf: &'life1 mut [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Receives data transmitted from remote host.
In nonblocking mode it should be called only after the event was polled
In blocking mode it will block until received or timeout.
Source§impl SocketTap<TokioSocketBase> for NetworkTap<UdpSocket, TokioSocketBase>
impl SocketTap<TokioSocketBase> for NetworkTap<UdpSocket, TokioSocketBase>
Source§fn connect<'life0, 'async_trait>(
&'life0 mut self,
_conn_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn connect<'life0, 'async_trait>(
&'life0 mut self,
_conn_timeout: Option<Duration>,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Connects to the remote host.
Source§fn is_encrypted(&self) -> bool
fn is_encrypted(&self) -> bool
Tells if current instace is
encrypted
i.e [TcpTlsConnection] over [TcpStream].Source§fn is_tcp(&self) -> bool
fn is_tcp(&self) -> bool
Tells if current instance is [TcpStream] if true, or [UdpSocket] if false
fn should_append_len(&self) -> bool
fn poll_read<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = CDnsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn send<'life0, 'life1, 'async_trait>(
&'life0 mut self,
sndbuf: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn send<'life0, 'life1, 'async_trait>(
&'life0 mut self,
sndbuf: &'life1 [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sends data over wire.
Source§fn recv<'life0, 'life1, 'async_trait>(
&'life0 mut self,
rcvbuf: &'life1 mut [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn recv<'life0, 'life1, 'async_trait>(
&'life0 mut self,
rcvbuf: &'life1 mut [u8],
) -> Pin<Box<dyn Future<Output = CDnsResult<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Receives data transmitted from remote host.
In nonblocking mode it should be called only after the event was polled
In blocking mode it will block until received or timeout.
Source§impl<T: AsFd, LOC> SocketTapCommon for NetworkTap<T, LOC>
impl<T: AsFd, LOC> SocketTapCommon for NetworkTap<T, LOC>
Source§fn is_conncected(&self) -> bool
fn is_conncected(&self) -> bool
Tells if socket/stream is connected to remote host
Source§fn get_fd(&self) -> Option<BorrowedFd<'_>>
fn get_fd(&self) -> Option<BorrowedFd<'_>>
Returns the raw fd of the socket.
Source§fn get_remote_addr(&self) -> &SocketAddr
fn get_remote_addr(&self) -> &SocketAddr
Returns the remote host Ip and port.
impl<T: AsFd, LOC> Send for NetworkTap<T, LOC>
impl<T: AsFd, LOC> Sync for NetworkTap<T, LOC>
Auto Trait Implementations§
impl<T, LOC> Freeze for NetworkTap<T, LOC>where
T: Freeze,
impl<T, LOC> RefUnwindSafe for NetworkTap<T, LOC>where
T: RefUnwindSafe,
LOC: RefUnwindSafe,
impl<T, LOC> Unpin for NetworkTap<T, LOC>
impl<T, LOC> UnwindSafe for NetworkTap<T, LOC>where
T: UnwindSafe,
LOC: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more