mirror of
https://github.com/n0-computer/noq.git
synced 2026-09-21 18:53:27 +00:00
34 lines
26 KiB
HTML
34 lines
26 KiB
HTML
<!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> <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 infeasible–for example, if servers are short-lived or not associated
|
||
with a domain name–then 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 peer’s 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 >= 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> |