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 EndpointEvents emitted from related Connections
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), Box<AcceptError>>
pub fn accept( &mut self, incoming: Incoming, now: Instant, buf: &mut Vec<u8>, server_config: Option<Arc<ServerConfig>>, ) -> Result<(ConnectionHandle, Connection), Box<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.may_retry() is false.
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
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Endpoint
impl !RefUnwindSafe for Endpoint
impl Send for Endpoint
impl Sync for Endpoint
impl Unpin for Endpoint
impl !UnwindSafe for Endpoint
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more