Expand description
Low-level protocol logic for the QUIC protoocol
quinn-proto contains a fully deterministic implementation of QUIC protocol logic. It contains no networking code and does not get any relevant timestamps from the operating system. Most users may want to use the futures-based quinn API instead.
The quinn-proto API might be of interest if you want to use it from a C or C++ project through C bindings or if you want to use a different event loop than the one tokio provides.
The most important types are Endpoint
, which conceptually represents the protocol state for
a single socket and mostly manages configuration and dispatches incoming datagrams to the
related Connection
. Connection
types contain the bulk of the protocol logic related to
managing a single connection and all the related state (such as streams).
Modules§
- Logic for controlling the rate at which data is sent
- Traits and implementations for the QUIC cryptography protocol
- QUIC connection transport parameters
Structs§
- Error type for attempting to accept an
Incoming
- Parameters for controlling the peer’s acknowledgement frequency
- Reason given by an application for closing the connection
- A chunk of data from the receive stream
- Chunks
- Configuration for outgoing connections
- Error indicating that a stream has not been opened or has already been finished or reset
- Protocol state and logic for a single QUIC connection
- Reason given by the transport for closing the connection
- Events sent from an Endpoint to a Connection
- Internal identifier for a
Connection
currently associated with an endpoint - Protocol-level identifier for a connection.
- Connection statistics
- An unreliable datagram
- API to control datagram traffic
- The main entry point to the library
- Global configuration for the endpoint, affecting all connections
- Events sent from a Connection to an Endpoint
- A
ConnectionIdParser
implementation that assumes the connection ID is of fixed length - Number of frames transmitted of each frame type
- Generates 8-byte connection IDs that can be efficiently
validate
d - Maximum duration of inactivity to accept before timing out the connection.
- An incoming connection for which the server has not yet begun its part of the handshake.
- The connection ID was not recognized by the
ConnectionIdGenerator
- Parameters governing MTU discovery.
- Decodes a QUIC packet’s invariant header
- Statistics related to a transmission path
- Header of an Initial packet, before decryption
- Generates purely random connection IDs of a specified length
- Access to streams
- Error for attempting to retry an
Incoming
which already bears an address validation token from a previous retry - RTT estimation for a particular network path
- Access to streams
- Parameters governing incoming connections
- Identifier for a stream within a particular connection
- Access to streams
- An outgoing packet
- Parameters governing the core QUIC state machine
- Transport-level errors occur when a peer violates the protocol specification
- Transport-level error code
- Statistics about UDP datagrams transmitted or received on a connection
- An integer less than 2^62
- Error returned when constructing a
VarInt
from a value >= 2^62 - Indicates how many bytes and chunks had been transferred in a write operation
Enums§
- Errors in the configuration of an endpoint
- Errors in the parameters being used to create a new connection
- Reasons why a connection might be lost
- Event resulting from processing a single datagram
- Whether a stream communicates data in both directions or only from the initiator
- Explicit congestion notification codepoint
- Events of interest to the application
- Reasons why attempting to finish a stream might fail
- Long packet types with uniform header structure
- Packet decode error
- Plain packet header
- Errors triggered when reading from a recv stream
- Errors triggered when opening a recv stream for reading
- Errors that can arise when sending a datagram
- Whether an endpoint was the initiator of a connection
- Application events about streams
- Errors triggered while writing to a send stream
Constants§
- The QUIC protocol version implemented.
Traits§
- A source of one or more buffers which can be converted into
Bytes
buffers on demand - Generates connection IDs for incoming connections
- Parse connection id in short header packet