pub struct Endpoint { /* private fields */ }
Expand description
A QUIC endpoint.
An endpoint corresponds to a single UDP socket, may host many connections, and may act as both client and server for different connections.
May be cloned to obtain another handle to the same endpoint.
Implementations
sourceimpl Endpoint
impl Endpoint
sourcepub fn client(addr: SocketAddr) -> Result<Self>
pub fn client(addr: SocketAddr) -> Result<Self>
Helper to construct an endpoint for use with outgoing connections only
Must be called from within a tokio runtime context. Note that addr
is the local address
to bind to, which should usually be a wildcard address like 0.0.0.0:0
or [::]:0
, which
allow communication with any reachable IPv4 or IPv6 address respectively from an OS-assigned
port.
Platform defaults for dual-stack sockets vary. For example, any socket bound to a wildcard IPv6 address on Windows will not by default be able to communicate with IPv4 addresses. Portable applications should bind an address that matches the family they wish to communicate within.
sourcepub fn server(config: ServerConfig, addr: SocketAddr) -> Result<(Self, Incoming)>
pub fn server(config: ServerConfig, addr: SocketAddr) -> Result<(Self, Incoming)>
Helper to construct an endpoint for use with both incoming and outgoing connections
Must be called from within a tokio runtime context.
Platform defaults for dual-stack sockets vary. For example, any socket bound to a wildcard IPv6 address on Windows will not by default be able to communicate with IPv4 addresses. Portable applications should bind an address that matches the family they wish to communicate within.
sourcepub fn new(
config: EndpointConfig,
server_config: Option<ServerConfig>,
socket: UdpSocket
) -> Result<(Self, Incoming)>
pub fn new(
config: EndpointConfig,
server_config: Option<ServerConfig>,
socket: UdpSocket
) -> Result<(Self, Incoming)>
Construct an endpoint with arbitrary configuration
Must be called from within a tokio runtime context.
sourcepub fn set_default_client_config(&mut self, config: ClientConfig)
pub fn set_default_client_config(&mut self, config: ClientConfig)
Set the client configuration used by connect
sourcepub fn connect(
&self,
addr: SocketAddr,
server_name: &str
) -> Result<Connecting, ConnectError>
pub fn connect(
&self,
addr: SocketAddr,
server_name: &str
) -> Result<Connecting, ConnectError>
Connect to a remote endpoint
server_name
must be covered by the certificate presented by the server. This prevents a
connection from being intercepted by an attacker with a valid certificate for some other
server.
May fail immediately due to configuration errors, or in the future if the connection could not be established.
sourcepub fn connect_with(
&self,
config: ClientConfig,
addr: SocketAddr,
server_name: &str
) -> Result<Connecting, ConnectError>
pub fn connect_with(
&self,
config: ClientConfig,
addr: SocketAddr,
server_name: &str
) -> Result<Connecting, ConnectError>
Connect to a remote endpoint using a custom configuration.
See connect()
for details.
sourcepub fn rebind(&self, socket: UdpSocket) -> Result<()>
pub fn rebind(&self, socket: UdpSocket) -> Result<()>
Switch to a new UDP socket
Allows the endpoint’s address to be updated live, affecting all active connections. Incoming connections and connections to servers unreachable from the new address will be lost.
On error, the old UDP socket is retained.
sourcepub fn set_server_config(&self, server_config: Option<ServerConfig>)
pub fn set_server_config(&self, server_config: Option<ServerConfig>)
Replace the server configuration, affecting new incoming connections only
Useful for e.g. refreshing TLS certificates without disrupting existing connections.
sourcepub fn local_addr(&self) -> Result<SocketAddr>
pub fn local_addr(&self) -> Result<SocketAddr>
Get the local SocketAddr
the underlying socket is bound to
sourcepub fn close(&self, error_code: VarInt, reason: &[u8])
pub fn close(&self, error_code: VarInt, reason: &[u8])
Close all of this endpoint’s connections immediately and cease accepting new connections.
See Connection::close()
for details.
sourcepub async fn wait_idle(&self)
pub async fn wait_idle(&self)
Wait for all connections on the endpoint to be cleanly shut down
Waiting for this condition before exiting ensures that a good-faith effort is made to notify peers of recent connection closes, whereas exiting immediately could force them to wait out the idle timeout period.
Does not proactively close existing connections or cause incoming connections to be
rejected. Consider calling close()
and dropping the Incoming
stream if
that is desired.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Endpoint
impl Send for Endpoint
impl Sync for Endpoint
impl Unpin for Endpoint
impl !UnwindSafe for Endpoint
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more