pub struct Endpoint { /* private fields */ }
Expand description
The main entry point to the library
This object performs no I/O whatsoever. Instead, it consumes incoming packets and
connection-generated events via handle
and handle_event
.
Implementations§
Source§impl Endpoint
impl Endpoint
Sourcepub fn new(
config: Arc<EndpointConfig>,
server_config: Option<Arc<ServerConfig>>,
allow_mtud: bool,
rng_seed: Option<[u8; 32]>,
) -> Self
pub fn new( config: Arc<EndpointConfig>, server_config: Option<Arc<ServerConfig>>, allow_mtud: bool, rng_seed: Option<[u8; 32]>, ) -> Self
Create a new endpoint
allow_mtud
enables path MTU detection when requested by Connection
configuration for
better performance. This requires that outgoing packets are never fragmented, which can be
achieved via e.g. the IPV6_DONTFRAG
socket option.
If rng_seed
is provided, it will be used to initialize the endpoint’s rng (having priority
over the rng seed configured in EndpointConfig
). Note that the rng_seed
parameter will
be removed in a future release, so prefer setting it to None
and configuring rng seeds
using EndpointConfig::rng_seed
.
Sourcepub fn set_server_config(&mut self, server_config: Option<Arc<ServerConfig>>)
pub fn set_server_config(&mut self, server_config: Option<Arc<ServerConfig>>)
Replace the server configuration, affecting new incoming connections only
Sourcepub fn handle_event(
&mut self,
ch: ConnectionHandle,
event: EndpointEvent,
) -> Option<ConnectionEvent>
pub fn handle_event( &mut self, ch: ConnectionHandle, event: EndpointEvent, ) -> Option<ConnectionEvent>
Process EndpointEvent
s emitted from related Connection
s
In turn, processing this event may return a ConnectionEvent
for the same Connection
.
Sourcepub fn handle(
&mut self,
now: Instant,
remote: SocketAddr,
local_ip: Option<IpAddr>,
ecn: Option<EcnCodepoint>,
data: BytesMut,
buf: &mut Vec<u8>,
) -> Option<DatagramEvent>
pub fn handle( &mut self, now: Instant, remote: SocketAddr, local_ip: Option<IpAddr>, ecn: Option<EcnCodepoint>, data: BytesMut, buf: &mut Vec<u8>, ) -> Option<DatagramEvent>
Process an incoming UDP datagram
Sourcepub fn connect(
&mut self,
now: Instant,
config: ClientConfig,
remote: SocketAddr,
server_name: &str,
) -> Result<(ConnectionHandle, Connection), ConnectError>
pub fn connect( &mut self, now: Instant, config: ClientConfig, remote: SocketAddr, server_name: &str, ) -> Result<(ConnectionHandle, Connection), ConnectError>
Initiate a connection
Sourcepub fn accept(
&mut self,
incoming: Incoming,
now: Instant,
buf: &mut Vec<u8>,
server_config: Option<Arc<ServerConfig>>,
) -> Result<(ConnectionHandle, Connection), AcceptError>
pub fn accept( &mut self, incoming: Incoming, now: Instant, buf: &mut Vec<u8>, server_config: Option<Arc<ServerConfig>>, ) -> Result<(ConnectionHandle, Connection), AcceptError>
Attempt to accept this incoming connection (an error may still occur)
Sourcepub fn refuse(&mut self, incoming: Incoming, buf: &mut Vec<u8>) -> Transmit
pub fn refuse(&mut self, incoming: Incoming, buf: &mut Vec<u8>) -> Transmit
Reject this incoming connection attempt
Sourcepub fn retry(
&mut self,
incoming: Incoming,
buf: &mut Vec<u8>,
) -> Result<Transmit, RetryError>
pub fn retry( &mut self, incoming: Incoming, buf: &mut Vec<u8>, ) -> Result<Transmit, RetryError>
Respond with a retry packet, requiring the client to retry with address validation
Errors if incoming.remote_address_validated()
is true.
Sourcepub fn config(&self) -> &EndpointConfig
pub fn config(&self) -> &EndpointConfig
Access the configuration used by this endpoint
Sourcepub fn open_connections(&self) -> usize
pub fn open_connections(&self) -> usize
Number of connections that are currently open
Sourcepub fn incoming_buffer_bytes(&self) -> u64
pub fn incoming_buffer_bytes(&self) -> u64
Counter for the number of bytes currently used in the buffers for Initial and 0-RTT messages for pending incoming connections