Trait cap_net_ext::PoolExt
source · pub trait PoolExt: Sealed {
// Required methods
fn bind_existing_tcp_listener<A: ToSocketAddrs>(
&self,
listener: &TcpListener,
addrs: A,
) -> Result<()>;
fn bind_existing_udp_socket<A: ToSocketAddrs>(
&self,
socket: &UdpSocket,
addrs: A,
) -> Result<()>;
fn connect_into_tcp_stream<A: ToSocketAddrs>(
&self,
socket: TcpListener,
addrs: A,
) -> Result<TcpStream>;
fn connect_existing_tcp_listener<A: ToSocketAddrs>(
&self,
socket: &TcpListener,
addrs: A,
) -> Result<()>;
fn connect_existing_udp_socket<A: ToSocketAddrs>(
&self,
socket: &UdpSocket,
addrs: A,
) -> Result<()>;
fn tcp_binder<A: ToSocketAddrs>(&self, addrs: A) -> Result<TcpBinder>;
fn udp_binder<A: ToSocketAddrs>(&self, addrs: A) -> Result<UdpBinder>;
fn tcp_connecter<A: ToSocketAddrs>(&self, addrs: A) -> Result<TcpConnecter>;
fn udp_connecter<A: ToSocketAddrs>(&self, addrs: A) -> Result<UdpConnecter>;
}
Expand description
A trait for extending Pool
types.
These functions have a ToSocketAddrs
argument, which can return either
IPv4 or IPv6 addresses, however they also require the socket to be created
with a specific address family up front. Consequently, it’s recommended to
do address resolution outside of this API and just pass resolved
SocketAddr
s in.
Required Methods§
sourcefn bind_existing_tcp_listener<A: ToSocketAddrs>(
&self,
listener: &TcpListener,
addrs: A,
) -> Result<()>
fn bind_existing_tcp_listener<A: ToSocketAddrs>( &self, listener: &TcpListener, addrs: A, ) -> Result<()>
Bind a TcpListener
to the specified address.
A newly-created TcpListener
created with TcpListenerExt::new
has not been bound yet; this function binds it. Before it can accept
connections, it must be marked for listening with
TcpListenerExt::listen
.
This is similar to Pool::bind_tcp_listener
in that it binds a TCP
socket, however it does not create the socket itself, or perform the
listen
step.
This function ensures that the address to be bound is permitted by the
pool, and performs the bind. To perform these steps separately, create
a TcpBinder
with Self::tcp_binder
and use
TcpBinder::bind_existing_tcp_listener
.
sourcefn bind_existing_udp_socket<A: ToSocketAddrs>(
&self,
socket: &UdpSocket,
addrs: A,
) -> Result<()>
fn bind_existing_udp_socket<A: ToSocketAddrs>( &self, socket: &UdpSocket, addrs: A, ) -> Result<()>
Bind a UdpSocket
to the specified address.
A newly-created UdpSocket
created with UdpSocketExt::new
has not
been bound yet; this function binds it.
This is similar to Pool::bind_udp_socket
in that it binds a UDP
socket, however it does not create the socket itself.
This function ensures that the address to be bound is permitted by the
pool, and performs the bind. To perform these steps separately, create
a UdpBinder
with Self::udp_binder
and use
UdpBinder::bind_existing_udp_socket
.
sourcefn connect_into_tcp_stream<A: ToSocketAddrs>(
&self,
socket: TcpListener,
addrs: A,
) -> Result<TcpStream>
fn connect_into_tcp_stream<A: ToSocketAddrs>( &self, socket: TcpListener, addrs: A, ) -> Result<TcpStream>
Initiate a TCP connection, converting a TcpListener
to a
TcpStream
.
This is simlar to Pool::connect_tcp_stream
in that it performs a
TCP connection, but instead of creating a new socket itself it takes a
TcpListener
, such as one created with TcpListenerExt::new
.
Despite the name, this function uses the TcpListener
type as a
generic socket container.
This function ensures that the address to connect to is permitted by
the pool, and performs the connect. To perform these steps separately,
create a TcpConnecter
with Self::tcp_connecter
and use
TcpConnecter::connect_into_tcp_stream
.
sourcefn connect_existing_tcp_listener<A: ToSocketAddrs>(
&self,
socket: &TcpListener,
addrs: A,
) -> Result<()>
fn connect_existing_tcp_listener<A: ToSocketAddrs>( &self, socket: &TcpListener, addrs: A, ) -> Result<()>
Initiate a TCP connection on a socket.
This is simlar to Self::connect_into_tcp_stream
, however instead of
converting a TcpListener
to a TcpStream
, it leaves fd in the
existing TcpListener
.
This function ensures that the address to connect to is permitted by
the pool, and performs the connect. To perform these steps separately,
create a TcpConnecter
with Self::tcp_connecter
and use
TcpConnecter::connect_existing_tcp_listener
.
sourcefn connect_existing_udp_socket<A: ToSocketAddrs>(
&self,
socket: &UdpSocket,
addrs: A,
) -> Result<()>
fn connect_existing_udp_socket<A: ToSocketAddrs>( &self, socket: &UdpSocket, addrs: A, ) -> Result<()>
Initiate a UDP connection.
This is simlar to Pool::connect_udp_socket
in that it performs a
UDP connection, but instead of creating a new socket itself it takes a
UdpSocket
, such as one created with UdpSocketExt::new
.
This function ensures that the address to connect to is permitted by
the pool, and performs the connect. To perform these steps separately,
create a UdpConnecter
with Self::udp_connecter
and use
UdpConnecter::connect_existing_udp_socket
.
sourcefn tcp_binder<A: ToSocketAddrs>(&self, addrs: A) -> Result<TcpBinder>
fn tcp_binder<A: ToSocketAddrs>(&self, addrs: A) -> Result<TcpBinder>
Create a TCP binder.
This is an alternative to Self::bind_existing_tcp_listener
. It
checks that all the addresses in addrs
are permitted for TCP binding
up front, and then records them in a TcpBinder
which can then be
used to make repeated TcpBinder::bind_existing_tcp_listener
calls.
sourcefn udp_binder<A: ToSocketAddrs>(&self, addrs: A) -> Result<UdpBinder>
fn udp_binder<A: ToSocketAddrs>(&self, addrs: A) -> Result<UdpBinder>
Create a UDP binder.
This is an alternative to Self::bind_existing_udp_socket
. It checks
that all the addresses in addrs
are permitted for UDP binding up
front, and then records them in a UdpBinder
which can then be used
to make repeated UdpBinder::bind_existing_udp_socket
calls.
sourcefn tcp_connecter<A: ToSocketAddrs>(&self, addrs: A) -> Result<TcpConnecter>
fn tcp_connecter<A: ToSocketAddrs>(&self, addrs: A) -> Result<TcpConnecter>
Create a TCP connecter.
This is an alternative to Self::connect_into_tcp_stream
and
Self::connect_existing_tcp_listener
. It checks that all the
addresses in addrs
are permitted for TCP connecting up front, and
then records them in a TcpConnecter
which can then be used to make
repeated TcpConnecter::connect_into_tcp_stream
and
TcpConnecter::connect_existing_tcp_listener
calls.
sourcefn udp_connecter<A: ToSocketAddrs>(&self, addrs: A) -> Result<UdpConnecter>
fn udp_connecter<A: ToSocketAddrs>(&self, addrs: A) -> Result<UdpConnecter>
Create a UDP connecter.
This is an alternative to Self::connect_existing_udp_socket
. It
checks that all the addresses in addrs
are permitted for UDP
connecting up front, and then records them in a UdpConnecter
which
can then be used to make repeated
UdpConnecter::connect_existing_udp_socket
calls.