Struct QuicServer

Source
pub struct QuicServer { /* private fields */ }
Expand description

The quic server that can accept incoming connections.

To create a server, you need to use the QuicServerBuilder to configure the server, and then call the QuicServerBuilder::listen method to start the server.

QuicServer is unique, which means that there can be only one server running at the same time. If you want to start a new server, you need to drop the old server first.

QuicServer can only accept connections, dont manage the connections. You can get the incoming connection by calling the QuicServer::accept method.

Implementations§

Source§

impl QuicServer

Source

pub fn add_interface(&self, iface: Arc<dyn QuicInterface>) -> Result<()>

Bind to an interface.

The server will receive datagrams from it, and prevent the interfaces from being automatically released.

This method can be called after the server shutdown, but the server will still not accept new connections.

Source

pub fn builder() -> QuicServerBuilder<ConfigBuilder<ServerConfig, WantsVerifier>>

Start to build a QuicServer.

Source

pub fn builder_with_tls( tls_config: TlsServerConfig, ) -> QuicServerBuilder<TlsServerConfig>

Start to build a QuicServer with the given TLS configuration.

This is useful when you want to customize the TLS configuration, or integrate qm-quic with other crates.

Source

pub fn builder_with_crypto_provieder( provider: Arc<CryptoProvider>, ) -> QuicServerBuilder<ConfigBuilder<ServerConfig, WantsVerifier>>

Start to build a QuicServer with the given tls crypto provider.

Source

pub fn addresses(&self) -> HashSet<SocketAddr>

Get the addresses that the server still listens to.

The return vector may be different from the addresses you passed to the QuicServerBuilder::listen method.

Source

pub async fn accept(&self) -> Result<(Arc<Connection>, Pathway)>

Accept the next incoming connection.

The connection accepted may still in the progress of handshake, but you can use it to do anything you want, such as sending data, receiving data… operations will be pending until the connection is connected or closed.

If all listening udp sockets are closed, this method will return an error.

Source§

impl QuicServer

Source

pub fn shutdown(&self)

Trait Implementations§

Source§

impl Drop for QuicServer

Source§

fn drop(&mut self)

Executes the destructor for this type. 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