Files
noq/pr/796/docs/noq/index.html

34 lines
26 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="QUIC transport protocol implementation"><title>noq - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="noq" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="../crates.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Crate noq</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../noq/index.html">noq</a><span class="version">1.2.0</span></h2></div><div class="sidebar-elems"><ul class="block"><li><a id="all-types" href="all.html">All Items</a></li></ul><section id="rustdoc-toc"><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#about-quic" title="About QUIC">About QUIC</a></li></ul><h3><a href="#reexports">Crate Items</a></h3><ul class="block"><li><a href="#reexports" title="Re-exports">Re-exports</a></li><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li><li><a href="#traits" title="Traits">Traits</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><h1>Crate <span>noq</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/noq/lib.rs.html#1-146">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>QUIC transport protocol implementation</p>
<p><a href="https://en.wikipedia.org/wiki/QUIC">QUIC</a> is a modern transport protocol addressing
shortcomings of TCP, such as head-of-line blocking, poor security, slow handshakes, and
inefficient congestion control. This crate provides a portable userspace implementation. It
builds on top of noq-proto, which implements protocol logic independent of any particular
runtime.</p>
<p>The entry point of this crate is the <a href="struct.Endpoint.html" title="struct noq::Endpoint"><code>Endpoint</code></a>.</p>
<h2 id="about-quic"><a class="doc-anchor" href="#about-quic">§</a>About QUIC</h2>
<p>A QUIC connection is an association between two endpoints. The endpoint which initiates the
connection is termed the client, and the endpoint which accepts it is termed the server. A
single endpoint may function as both client and server for different connections, for example
in a peer-to-peer application. To communicate application data, each endpoint may open streams
up to a limit dictated by its peer. Typically, that limit is increased as old streams are
finished.</p>
<p>Streams may be unidirectional or bidirectional, and are cheap to create and disposable. For
example, a traditionally datagram-oriented application could use a new stream for every
message it wants to send, no longer needing to worry about MTUs. Bidirectional streams behave
much like a traditional TCP connection, and are useful for sending messages that have an
immediate response, such as an HTTP request. Stream data is delivered reliably, and there is no
ordering enforced between data on different streams.</p>
<p>By avoiding head-of-line blocking and providing unified congestion control across all streams
of a connection, QUIC is able to provide higher throughput and lower latency than one or
multiple TCP connections between the same two hosts, while providing more useful behavior than
raw UDP sockets.</p>
<p>noq also exposes unreliable datagrams, which are a low-level primitive preferred when
automatic fragmentation and retransmission of certain data is not desired.</p>
<p>QUIC uses encryption and identity verification built directly on TLS 1.3. Just as with a TLS
server, it is useful for a QUIC server to be identified by a certificate signed by a trusted
authority. If this is infeasiblefor example, if servers are short-lived or not associated
with a domain namethen as with TLS, self-signed certificates can be used to provide
encryption alone.</p>
</div></details><h2 id="reexports" class="section-header">Re-exports<a href="#reexports" class="anchor">§</a></h2><dl class="item-table reexports"><dt id="reexport.rustls"><code>pub use rustls;</code></dt><dt id="reexport.udp"><code>pub use <a class="mod" href="../noq_udp/index.html" title="mod noq_udp">udp</a>;</code></dt></dl><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a class="mod" href="congestion/index.html" title="mod noq::congestion">congestion</a></dt><dd>Logic for controlling the rate at which data is sent</dd><dt><a class="mod" href="crypto/index.html" title="mod noq::crypto">crypto</a></dt><dd>Traits and implementations for the QUIC cryptography protocol</dd></dl><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.Accept.html" title="struct noq::Accept">Accept</a></dt><dd>Future produced by <a href="struct.Endpoint.html#method.accept" title="method noq::Endpoint::accept"><code>Endpoint::accept</code></a></dd><dt><a class="struct" href="struct.AcceptBi.html" title="struct noq::AcceptBi">Accept<wbr>Bi</a></dt><dd>Future produced by <a href="struct.Connection.html#method.accept_bi" title="method noq::Connection::accept_bi"><code>Connection::accept_bi</code></a></dd><dt><a class="struct" href="struct.AcceptUni.html" title="struct noq::AcceptUni">Accept<wbr>Uni</a></dt><dd>Future produced by <a href="struct.Connection.html#method.accept_uni" title="method noq::Connection::accept_uni"><code>Connection::accept_uni</code></a></dd><dt><a class="struct" href="struct.AckFrequencyConfig.html" title="struct noq::AckFrequencyConfig">AckFrequency<wbr>Config</a></dt><dd>Parameters for controlling the peers acknowledgement frequency</dd><dt><a class="struct" href="struct.AddressDiscovery.html" title="struct noq::AddressDiscovery">Address<wbr>Discovery</a></dt><dd>Stream produced by <a href="struct.Path.html#method.observed_external_addr" title="method noq::Path::observed_external_addr"><code>Path::observed_external_addr</code></a></dd><dt><a class="struct" href="struct.ApplicationClose.html" title="struct noq::ApplicationClose">Application<wbr>Close</a></dt><dd>Reason given by an application for closing the connection</dd><dt><a class="struct" href="struct.BloomTokenLog.html" title="struct noq::BloomTokenLog">Bloom<wbr>Token<wbr>Log</a></dt><dd>Bloom filter-based <a href="trait.TokenLog.html" title="trait noq::TokenLog"><code>TokenLog</code></a></dd><dt><a class="struct" href="struct.Chunk.html" title="struct noq::Chunk">Chunk</a></dt><dd>A chunk of data from the receive stream</dd><dt><a class="struct" href="struct.ClientConfig.html" title="struct noq::ClientConfig">Client<wbr>Config</a></dt><dd>Configuration for outgoing connections</dd><dt><a class="struct" href="struct.Closed.html" title="struct noq::Closed">Closed</a></dt><dd>State of a <a href="struct.Connection.html" title="struct noq::Connection"><code>Connection</code></a> at the moment it was closed.</dd><dt><a class="struct" href="struct.ClosedPath.html" title="struct noq::ClosedPath">Closed<wbr>Path</a></dt><dd>Error indicating that a path has not been opened or has already been abandoned</dd><dt><a class="struct" href="struct.ClosedStream.html" title="struct noq::ClosedStream">Closed<wbr>Stream</a></dt><dd>Error indicating that a stream has not been opened or has already been finished or reset</dd><dt><a class="struct" href="struct.Connecting.html" title="struct noq::Connecting">Connecting</a></dt><dd>In-progress connection attempt future</dd><dt><a class="struct" href="struct.Connection.html" title="struct noq::Connection">Connection</a></dt><dd>A QUIC connection.</dd><dt><a class="struct" href="struct.ConnectionClose.html" title="struct noq::ConnectionClose">Connection<wbr>Close</a></dt><dd>Reason given by the transport for closing the connection</dd><dt><a class="struct" href="struct.ConnectionId.html" title="struct noq::ConnectionId">Connection<wbr>Id</a></dt><dd>Protocol-level identifier for a connection.</dd><dt><a class="struct" href="struct.ConnectionStats.html" title="struct noq::ConnectionStats">Connection<wbr>Stats</a></dt><dd>Connection statistics.</dd><dt><a class="struct" href="struct.DecryptedInitial.html" title="struct noq::DecryptedInitial">Decrypted<wbr>Initial</a></dt><dd>Decrypted payload of a QUIC Initial packet</dd><dt><a class="struct" href="struct.Endpoint.html" title="struct noq::Endpoint">Endpoint</a></dt><dd>A QUIC endpoint.</dd><dt><a class="struct" href="struct.EndpointConfig.html" title="struct noq::EndpointConfig">Endpoint<wbr>Config</a></dt><dd>Global configuration for the endpoint, affecting all connections</dd><dt><a class="struct" href="struct.EndpointStats.html" title="struct noq::EndpointStats">Endpoint<wbr>Stats</a></dt><dd>Statistics on <a href="struct.Endpoint.html" title="struct noq::Endpoint">Endpoint</a> activity</dd><dt><a class="struct" href="struct.FourTuple.html" title="struct noq::FourTuple">Four<wbr>Tuple</a></dt><dd>Identifies a network path by the combination of remote and local addresses</dd><dt><a class="struct" href="struct.FrameStats.html" title="struct noq::FrameStats">Frame<wbr>Stats</a></dt><dd>Number of frames transmitted or received of each frame type.</dd><dt><a class="struct" href="struct.IdleTimeout.html" title="struct noq::IdleTimeout">Idle<wbr>Timeout</a></dt><dd>Maximum duration of inactivity to accept before timing out the connection</dd><dt><a class="struct" href="struct.Incoming.html" title="struct noq::Incoming">Incoming</a></dt><dd>An incoming connection for which the server has not yet begun its part of the handshake</dd><dt><a class="struct" href="struct.IncomingFuture.html" title="struct noq::IncomingFuture">Incoming<wbr>Future</a></dt><dd>Basic adapter to let <a href="struct.Incoming.html" title="struct noq::Incoming"><code>Incoming</code></a> be <code>await</code>-ed like a <a href="struct.Connecting.html" title="struct noq::Connecting"><code>Connecting</code></a></dd><dt><a class="struct" href="struct.InvalidCid.html" title="struct noq::InvalidCid">Invalid<wbr>Cid</a></dt><dd>The connection ID was not recognized by the <a href="trait.ConnectionIdGenerator.html" title="trait noq::ConnectionIdGenerator"><code>ConnectionIdGenerator</code></a></dd><dt><a class="struct" href="struct.Lagged.html" title="struct noq::Lagged">Lagged</a></dt><dd>The receiver lagged too far behind.</dd><dt><a class="struct" href="struct.MtuDiscoveryConfig.html" title="struct noq::MtuDiscoveryConfig">MtuDiscovery<wbr>Config</a></dt><dd>Parameters governing MTU discovery.</dd><dt><a class="struct" href="struct.NatTraversalUpdates.html" title="struct noq::NatTraversalUpdates">NatTraversal<wbr>Updates</a></dt><dd>A stream of NAT traversal updates for a connection.</dd><dt><a class="struct" href="struct.NoneTokenLog.html" title="struct noq::NoneTokenLog">None<wbr>Token<wbr>Log</a></dt><dd>Null implementation of <a href="trait.TokenLog.html" title="trait noq::TokenLog"><code>TokenLog</code></a>, which never accepts tokens</dd><dt><a class="struct" href="struct.NoneTokenStore.html" title="struct noq::NoneTokenStore">None<wbr>Token<wbr>Store</a></dt><dd>Null implementation of <a href="trait.TokenStore.html" title="trait noq::TokenStore"><code>TokenStore</code></a>, which does not store any tokens</dd><dt><a class="struct" href="struct.ObservedExternalAddr.html" title="struct noq::ObservedExternalAddr">Observed<wbr>External<wbr>Addr</a></dt><dd>Watches the external address reported by the peer for this connection.</dd><dt><a class="struct" href="struct.OnClosed.html" title="struct noq::OnClosed">OnClosed</a></dt><dd>Future returned by <a href="struct.Connection.html#method.on_closed" title="method noq::Connection::on_closed"><code>Connection::on_closed</code></a></dd><dt><a class="struct" href="struct.OpenBi.html" title="struct noq::OpenBi">OpenBi</a></dt><dd>Future produced by <a href="struct.Connection.html#method.open_bi" title="method noq::Connection::open_bi"><code>Connection::open_bi</code></a></dd><dt><a class="struct" href="struct.OpenPath.html" title="struct noq::OpenPath">Open<wbr>Path</a></dt><dd>Future produced by <a href="struct.Connection.html#method.open_path" title="method noq::Connection::open_path"><code>crate::Connection::open_path</code></a></dd><dt><a class="struct" href="struct.OpenUni.html" title="struct noq::OpenUni">OpenUni</a></dt><dd>Future produced by <a href="struct.Connection.html#method.open_uni" title="method noq::Connection::open_uni"><code>Connection::open_uni</code></a></dd><dt><a class="struct" href="struct.Path.html" title="struct noq::Path">Path</a></dt><dd>An open network transmission within a multipath-enabled connection.</dd><dt><a class="struct" href="struct.PathEvents.html" title="struct noq::PathEvents">Path<wbr>Events</a></dt><dd>A stream of <a href="enum.PathEvent.html" title="enum noq::PathEvent"><code>PathEvent</code></a>s for all paths in a connection.</dd><dt><a class="struct" href="struct.PathId.html" title="struct noq::PathId">PathId</a></dt><dd>Id representing different paths when using multipath extension</dd><dt><a class="struct" href="struct.PathStats.html" title="struct noq::PathStats">Path<wbr>Stats</a></dt><dd>Statistics related to a transmission path.</dd><dt><a class="struct" href="struct.QlogConfig.html" title="struct noq::QlogConfig">Qlog<wbr>Config</a></dt><dd>Configuration for qlog trace logging.</dd><dt><a class="struct" href="struct.QlogFileFactory.html" title="struct noq::QlogFileFactory">Qlog<wbr>File<wbr>Factory</a></dt><dd>Enables writing qlog traces to a directory.</dd><dt><a class="struct" href="struct.ReadDatagram.html" title="struct noq::ReadDatagram">Read<wbr>Datagram</a></dt><dd>Future produced by <a href="struct.Connection.html#method.read_datagram" title="method noq::Connection::read_datagram"><code>Connection::read_datagram</code></a></dd><dt><a class="struct" href="struct.RecvStream.html" title="struct noq::RecvStream">Recv<wbr>Stream</a></dt><dd>A stream that can only be used to receive data</dd><dt><a class="struct" href="struct.RetryError.html" title="struct noq::RetryError">Retry<wbr>Error</a></dt><dd>Error for attempting to retry an <a href="struct.Incoming.html" title="struct noq::Incoming"><code>Incoming</code></a> which already bears a token from a previous retry</dd><dt><a class="struct" href="struct.SendDatagram.html" title="struct noq::SendDatagram">Send<wbr>Datagram</a></dt><dd>Future produced by <a href="struct.Connection.html#method.send_datagram_wait" title="method noq::Connection::send_datagram_wait"><code>Connection::send_datagram_wait</code></a></dd><dt><a class="struct" href="struct.SendStream.html" title="struct noq::SendStream">Send<wbr>Stream</a></dt><dd>A stream that can only be used to send data</dd><dt><a class="struct" href="struct.ServerConfig.html" title="struct noq::ServerConfig">Server<wbr>Config</a></dt><dd>Parameters governing incoming connections</dd><dt><a class="struct" href="struct.SmolRuntime.html" title="struct noq::SmolRuntime">Smol<wbr>Runtime</a></dt><dd>A noq runtime for smol</dd><dt><a class="struct" href="struct.StdSystemTime.html" title="struct noq::StdSystemTime">StdSystem<wbr>Time</a></dt><dd>Default implementation of <a href="trait.TimeSource.html" title="trait noq::TimeSource"><code>TimeSource</code></a></dd><dt><a class="struct" href="struct.Stopped.html" title="struct noq::Stopped">Stopped</a></dt><dd>Future returned from <a href="struct.SendStream.html#method.stopped" title="method noq::SendStream::stopped"><code>SendStream::stopped</code></a>.</dd><dt><a class="struct" href="struct.StreamId.html" title="struct noq::StreamId">Stream<wbr>Id</a></dt><dd>Identifier for a stream within a particular connection</dd><dt><a class="struct" href="struct.TokenMemoryCache.html" title="struct noq::TokenMemoryCache">Token<wbr>Memory<wbr>Cache</a></dt><dd><code>TokenStore</code> implementation that stores up to <code>N</code> tokens per server name for up to a
limited number of server names, in-memory</dd><dt><a class="struct" href="struct.TokenReuseError.html" title="struct noq::TokenReuseError">Token<wbr>Reuse<wbr>Error</a></dt><dd>Error for when a validation token may have been reused</dd><dt><a class="struct" href="struct.TokioRuntime.html" title="struct noq::TokioRuntime">Tokio<wbr>Runtime</a></dt><dd>A noq runtime for Tokio</dd><dt><a class="struct" href="struct.Transmit.html" title="struct noq::Transmit">Transmit</a></dt><dd>An outgoing packet</dd><dt><a class="struct" href="struct.TransportConfig.html" title="struct noq::TransportConfig">Transport<wbr>Config</a></dt><dd>Parameters governing the core QUIC state machine</dd><dt><a class="struct" href="struct.TransportErrorCode.html" title="struct noq::TransportErrorCode">Transport<wbr>Error<wbr>Code</a></dt><dd>Transport-level error code</dd><dt><a class="struct" href="struct.UdpStats.html" title="struct noq::UdpStats">UdpStats</a></dt><dd>Statistics about UDP datagrams transmitted or received on a connection.</dd><dt><a class="struct" href="struct.UnorderedRecvStream.html" title="struct noq::UnorderedRecvStream">Unordered<wbr>Recv<wbr>Stream</a></dt><dd>A stream that can be used to receive data out-of-order.</dd><dt><a class="struct" href="struct.ValidationTokenConfig.html" title="struct noq::ValidationTokenConfig">Validation<wbr>Token<wbr>Config</a></dt><dd>Configuration for sending and handling validation tokens in incoming connections</dd><dt><a class="struct" href="struct.VarInt.html" title="struct noq::VarInt">VarInt</a></dt><dd>An integer less than 2^62</dd><dt><a class="struct" href="struct.VarIntBoundsExceeded.html" title="struct noq::VarIntBoundsExceeded">VarInt<wbr>Bounds<wbr>Exceeded</a></dt><dd>Error returned when constructing a <code>VarInt</code> from a value &gt;= 2^62</dd><dt><a class="struct" href="struct.WeakConnectionHandle.html" title="struct noq::WeakConnectionHandle">Weak<wbr>Connection<wbr>Handle</a></dt><dd>A handle to some connection internals, use with care.</dd><dt><a class="struct" href="struct.WeakPathHandle.html" title="struct noq::WeakPathHandle">Weak<wbr>Path<wbr>Handle</a></dt><dd>Weak handle for a <a href="struct.Path.html" title="struct noq::Path"><code>Path</code></a> that does not keep the connection alive.</dd><dt><a class="struct" href="struct.ZeroRttAccepted.html" title="struct noq::ZeroRttAccepted">Zero<wbr>RttAccepted</a></dt><dd>Future that completes when a connection is fully established</dd></dl><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.ClosePathError.html" title="enum noq::ClosePathError">Close<wbr>Path<wbr>Error</a></dt><dd>Errors triggered when abandoning a path</dd><dt><a class="enum" href="enum.ConfigError.html" title="enum noq::ConfigError">Config<wbr>Error</a></dt><dd>Errors in the configuration of an endpoint</dd><dt><a class="enum" href="enum.ConnectError.html" title="enum noq::ConnectError">Connect<wbr>Error</a></dt><dd>Errors in the parameters being used to create a new connection</dd><dt><a class="enum" href="enum.ConnectionError.html" title="enum noq::ConnectionError">Connection<wbr>Error</a></dt><dd>Reasons why a connection might be lost</dd><dt><a class="enum" href="enum.Dir.html" title="enum noq::Dir">Dir</a></dt><dd>Whether a stream communicates data in both directions or only from the initiator</dd><dt><a class="enum" href="enum.EcnCodepoint.html" title="enum noq::EcnCodepoint">EcnCodepoint</a></dt><dd>Explicit congestion notification codepoint</dd><dt><a class="enum" href="enum.FrameType.html" title="enum noq::FrameType">Frame<wbr>Type</a></dt><dt><a class="enum" href="enum.PathError.html" title="enum noq::PathError">Path<wbr>Error</a></dt><dd>Errors that might trigger a path being closed</dd><dt><a class="enum" href="enum.PathEvent.html" title="enum noq::PathEvent">Path<wbr>Event</a></dt><dd>Application events about paths</dd><dt><a class="enum" href="enum.PathStatus.html" title="enum noq::PathStatus">Path<wbr>Status</a></dt><dd>The QUIC-MULTIPATH path status</dd><dt><a class="enum" href="enum.ReadError.html" title="enum noq::ReadError">Read<wbr>Error</a></dt><dd>Errors that arise from reading from a stream.</dd><dt><a class="enum" href="enum.ReadExactError.html" title="enum noq::ReadExactError">Read<wbr>Exact<wbr>Error</a></dt><dd>Errors that arise from reading from a stream.</dd><dt><a class="enum" href="enum.ReadToEndError.html" title="enum noq::ReadToEndError">Read<wbr>ToEnd<wbr>Error</a></dt><dd>Errors from <a href="struct.RecvStream.html#method.read_to_end" title="method noq::RecvStream::read_to_end"><code>RecvStream::read_to_end</code></a></dd><dt><a class="enum" href="enum.ResetError.html" title="enum noq::ResetError">Reset<wbr>Error</a></dt><dd>Errors that arise while waiting for a stream to be reset</dd><dt><a class="enum" href="enum.SendDatagramError.html" title="enum noq::SendDatagramError">Send<wbr>Datagram<wbr>Error</a></dt><dd>Errors that can arise when sending a datagram</dd><dt><a class="enum" href="enum.SetPathStatusError.html" title="enum noq::SetPathStatusError">SetPath<wbr>Status<wbr>Error</a></dt><dd>Error from setting path status</dd><dt><a class="enum" href="enum.Side.html" title="enum noq::Side">Side</a></dt><dd>Whether an endpoint was the initiator of a connection</dd><dt><a class="enum" href="enum.StoppedError.html" title="enum noq::StoppedError">Stopped<wbr>Error</a></dt><dd>Errors that arise while monitoring for a send stream stop from the peer</dd><dt><a class="enum" href="enum.WriteError.html" title="enum noq::WriteError">Write<wbr>Error</a></dt><dd>Errors that arise from writing to a stream</dd></dl><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><dl class="item-table"><dt><a class="trait" href="trait.AsyncTimer.html" title="trait noq::AsyncTimer">Async<wbr>Timer</a></dt><dd>Abstract implementation of an async timer for runtime independence</dd><dt><a class="trait" href="trait.AsyncUdpSocket.html" title="trait noq::AsyncUdpSocket">Async<wbr>UdpSocket</a></dt><dd>Abstract implementation of a UDP socket for runtime independence</dd><dt><a class="trait" href="trait.ConnectionIdGenerator.html" title="trait noq::ConnectionIdGenerator">Connection<wbr>IdGenerator</a></dt><dd>Generates connection IDs for incoming connections</dd><dt><a class="trait" href="trait.NetworkChangeHint.html" title="trait noq::NetworkChangeHint">Network<wbr>Change<wbr>Hint</a></dt><dd>Hints when the caller identifies a network change.</dd><dt><a class="trait" href="trait.QlogFactory.html" title="trait noq::QlogFactory">Qlog<wbr>Factory</a></dt><dd>Constructs a <a href="struct.QlogConfig.html" title="struct noq::QlogConfig"><code>QlogConfig</code></a> for individual connections.</dd><dt><a class="trait" href="trait.Runtime.html" title="trait noq::Runtime">Runtime</a></dt><dd>Abstracts I/O and timer operations for runtime independence</dd><dt><a class="trait" href="trait.TimeSource.html" title="trait noq::TimeSource">Time<wbr>Source</a></dt><dd>Object to get current <a href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html" title="struct std::time::SystemTime"><code>SystemTime</code></a></dd><dt><a class="trait" href="trait.TokenLog.html" title="trait noq::TokenLog">Token<wbr>Log</a></dt><dd>Responsible for limiting clients ability to reuse validation tokens</dd><dt><a class="trait" href="trait.TokenStore.html" title="trait noq::TokenStore">Token<wbr>Store</a></dt><dd>Responsible for storing validation tokens received from servers and retrieving them for use in
subsequent connections</dd><dt><a class="trait" href="trait.UdpSender.html" title="trait noq::UdpSender">UdpSender</a></dt><dd>An object for asynchronously writing to an associated <a href="trait.AsyncUdpSocket.html" title="trait noq::AsyncUdpSocket"><code>AsyncUdpSocket</code></a>.</dd></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.default_runtime.html" title="fn noq::default_runtime">default_<wbr>runtime</a></dt><dd>Automatically select an appropriate runtime from those enabled at compile time</dd></dl></section></div></main></body></html>