Struct quinn::generic::Connection[][src]

pub struct Connection<S: Session>(_);

A QUIC connection.

If all references to a connection (including every clone of the Connection handle, streams of incoming streams, and the various stream types) other than the ConnectionDriver have been dropped, the the connection will be automatically closed with an error_code of 0 and an empty reason. You can also close the connection explicitly by calling Connection::close().

May be cloned to obtain another handle to the same connection.

Implementations

impl<S> Connection<S> where
    S: Session
[src]

pub fn open_uni(&self) -> OpenUni<S>

Notable traits for OpenUni<S>

impl<S> Future for OpenUni<S> where
    S: Session
type Output = Result<SendStream<S>, ConnectionError>;
[src]

Initiate a new outgoing unidirectional stream.

Streams are cheap and instantaneous to open unless blocked by flow control. As a consequence, the peer won’t be notified that a stream has been opened until the stream is actually used.

pub fn open_bi(&self) -> OpenBi<S>

Notable traits for OpenBi<S>

impl<S> Future for OpenBi<S> where
    S: Session
type Output = Result<(SendStream<S>, RecvStream<S>), ConnectionError>;
[src]

Initiate a new outgoing bidirectional stream.

Streams are cheap and instantaneous to open unless blocked by flow control. As a consequence, the peer won’t be notified that a stream has been opened until the stream is actually used.

pub fn close(&self, error_code: VarInt, reason: &[u8])[src]

Close the connection immediately.

Pending operations will fail immediately with ConnectionError::LocallyClosed. Delivery of data on unfinished streams is not guaranteed, so the application must call this only when all important communications have been completed, e.g. by calling finish on outstanding SendStreams and waiting for the resulting futures to complete.

error_code and reason are not interpreted, and are provided directly to the peer.

reason will be truncated to fit in a single packet with overhead; to improve odds that it is preserved in full, it should be kept under 1KiB.

pub fn send_datagram(&self, data: Bytes) -> Result<(), SendDatagramError>[src]

Transmit data as an unreliable, unordered application datagram

Application datagrams are a low-level primitive. They may be lost or delivered out of order, and data must both fit inside a single QUIC packet and be smaller than the maximum dictated by the peer.

pub fn max_datagram_size(&self) -> Option<usize>[src]

Compute the maximum size of datagrams that may passed to send_datagram

Returns None if datagrams are unsupported by the peer or disabled locally.

This may change over the lifetime of a connection according to variation in the path MTU estimate. The peer can also enforce an arbitrarily small fixed limit, but if the peer’s limit is large this is guaranteed to be a little over a kilobyte at minimum.

Not necessarily the maximum size of received datagrams.

pub fn remote_address(&self) -> SocketAddr[src]

The peer’s UDP address

If ServerConfig::migration is true, clients may change addresses at will, e.g. when switching to a cellular internet connection.

pub fn authentication_data(&self) -> S::AuthenticationData[src]

Data conveyed by the peer during the handshake, including cryptographic identity

Trait Implementations

impl<S> Clone for Connection<S> where
    S: Session
[src]

impl<S: Debug + Session> Debug for Connection<S>[src]

Auto Trait Implementations

impl<S> RefUnwindSafe for Connection<S>

impl<S> Send for Connection<S>

impl<S> Sync for Connection<S>

impl<S> Unpin for Connection<S>

impl<S> UnwindSafe for Connection<S>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,