Struct quinn_proto::Endpoint

source ·
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

source

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.

source

pub fn set_server_config(&mut self, server_config: Option<Arc<ServerConfig>>)

Replace the server configuration, affecting new incoming connections only

source

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.

source

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

source

pub fn connect( &mut self, now: Instant, config: ClientConfig, remote: SocketAddr, server_name: &str, ) -> Result<(ConnectionHandle, Connection), ConnectError>

Initiate a connection

source

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)

source

pub fn refuse(&mut self, incoming: Incoming, buf: &mut Vec<u8>) -> Transmit

Reject this incoming connection attempt

source

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.

source

pub fn ignore(&mut self, incoming: Incoming)

Ignore this incoming connection attempt, not sending any packet in response

Doing this actively, rather than merely dropping the Incoming, is necessary to prevent memory leaks due to state within Endpoint tracking the incoming connection.

source

pub fn config(&self) -> &EndpointConfig

Access the configuration used by this endpoint

source

pub fn open_connections(&self) -> usize

Number of connections that are currently open

source

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§

source§

impl Debug for Endpoint

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more