Crate quinn_proto[][src]

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

congestion

Logic for controlling the rate at which data is sent

crypto

Traits and implementations for the QUIC cryptography protocol

generic

Types that are generic over the crypto protocol implementation

transport_parameters

QUIC connection transport parameters

Structs

ApplicationClose

Reason given by an application for closing the connection

Certificate

A single TLS certificate

CertificateChain

A chain of signed TLS certificates ending the one to be used by a server

Chunk

A chunk of data from the receive stream

Chunks

Chunks

ConnectionClose

Reason given by the transport for closing the connection

ConnectionEvent

Events sent from an Endpoint to a Connection

ConnectionHandle

Internal identifier for a Connection currently associated with an endpoint

ConnectionId

Protocol-level identifier for a connection.

ConnectionStats

Connection statistics

Datagram

An unreliable datagram

EndpointEvent

Events sent from a Connection to an Endpoint

ParseError

Errors encountered while parsing a TLS certificate or private key

PrivateKey

The private key of a TLS certificate to be used by a server

RandomConnectionIdGenerator

Generates purely random connection IDs of a certain length

RecvStream

Access to streams

SendStream

Access to streams

StreamId

Identifier for a stream within a particular connection

Streams

Access to streams

Transmit

An outgoing packet

TransportConfig

Parameters governing the core QUIC state machine

TransportError

Transport-level errors occur when a peer violates the protocol specification

TransportErrorCode

Transport-level error code

UnknownStream

Error indicating that a stream has not been opened or has already been finished or reset

VarInt

An integer less than 2^62

VarIntBoundsExceeded

Error returned when constructing a VarInt from a value >= 2^62

Written

Indicates how many bytes and chunks had been transferred in a write operation

Enums

ConfigError

Errors in the configuration of an endpoint

ConnectError

Errors in the parameters being used to create a new connection

ConnectionError

Reasons why a connection might be lost

DatagramEvent

Event resulting from processing a single datagram

Dir

Whether a stream communicates data in both directions or only from the initiator

EcnCodepoint

Explicit congestion notification codepoint

Event

Events of interest to the application

FinishError

Reasons why attempting to finish a stream might fail

ReadError

Errors triggered when reading from a recv stream

ReadableError

Errors triggered when opening a recv stream for reading

SendDatagramError

Errors that can arise when sending a datagram

Side

Whether an endpoint was the initiator of a connection

StreamEvent

Application events about streams

WriteError

Errors triggered while writing to a send stream

Constants

DEFAULT_SUPPORTED_VERSIONS

The QUIC protocol version implemented.

Traits

BytesSource

A source of one or more buffers which can be converted into Bytes buffers on demand

ConnectionIdGenerator

Generates connection IDs for incoming connections

Type Definitions

ClientConfig

A ClientConfig containing client-side rustls configuration

Connection

A Connection using rustls for the cryptography protocol

Datagrams

A Datagrams using rustls for the cryptography protocol

Endpoint

An Endpoint using rustls for the cryptography protocol

EndpointConfig

A EndpointConfig using rustls keys

ServerConfig

A ServerConfig containing server-side rustls configuration