Struct NetworkTap

Source
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>

Source

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

Trait Implementations§

Source§

impl<T: AsFd + Debug, LOC> Debug for NetworkTap<T, LOC>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

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,

Connects to the remote host.
Source§

fn is_encrypted(&self) -> bool

Tells if current instace is encrypted i.e [TcpTlsConnection] over [TcpStream].
Source§

fn is_tcp(&self) -> bool

Tells if current instance is [TcpStream] if true, or [UdpSocket] if false
Source§

fn should_append_len(&self) -> bool

Source§

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,

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,

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>

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,

Connects to the remote host.
Source§

fn is_encrypted(&self) -> bool

Tells if current instace is encrypted i.e [TcpTlsConnection] over [TcpStream].
Source§

fn is_tcp(&self) -> bool

Tells if current instance is [TcpStream] if true, or [UdpSocket] if false
Source§

fn should_append_len(&self) -> bool

Source§

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,

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,

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>

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,

Connects to the remote host.
Source§

fn is_encrypted(&self) -> bool

Tells if current instace is encrypted i.e [TcpTlsConnection] over [TcpStream].
Source§

fn is_tcp(&self) -> bool

Tells if current instance is [TcpStream] if true, or [UdpSocket] if false
Source§

fn should_append_len(&self) -> bool

Source§

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,

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,

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>

Source§

fn is_conncected(&self) -> bool

Tells if socket/stream is connected to remote host
Source§

fn get_fd(&self) -> Option<BorrowedFd<'_>>

Returns the raw fd of the socket.
Source§

fn get_remote_addr(&self) -> &SocketAddr

Returns the remote host Ip and port.
Source§

impl<T: AsFd, LOC> Send for NetworkTap<T, LOC>

Source§

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>

§

impl<T, LOC> Unpin for NetworkTap<T, LOC>
where T: Unpin, LOC: Unpin,

§

impl<T, LOC> UnwindSafe for NetworkTap<T, LOC>
where T: UnwindSafe, LOC: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V