}</code></pre><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p>Hints when the caller identifies a network change.</p>
</div></details><h2id="required-methods"class="section-header">Required Methods<ahref="#required-methods"class="anchor">§</a></h2><divclass="methods"><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.is_path_recoverable"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#7158">Source</a><h4class="code-header">fn <ahref="#tymethod.is_path_recoverable"class="fn">is_path_recoverable</a>(&self, path_id: <aclass="struct"href="struct.PathId.html"title="struct noq::PathId">PathId</a>, network_path: <aclass="struct"href="../noq_proto/struct.FourTuple.html"title="struct noq_proto::FourTuple">FourTuple</a>) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Inform the connection if a path may recover after a network change.</p>
</div></details><h2id="required-methods"class="section-header">Required Methods<ahref="#required-methods"class="anchor">§</a></h2><divclass="methods"><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.is_path_recoverable"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#7173">Source</a><h4class="code-header">fn <ahref="#tymethod.is_path_recoverable"class="fn">is_path_recoverable</a>(&self, path_id: <aclass="struct"href="struct.PathId.html"title="struct noq::PathId">PathId</a>, network_path: <aclass="struct"href="../noq_proto/struct.FourTuple.html"title="struct noq_proto::FourTuple">FourTuple</a>) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Inform the connection if a path may recover after a network change.</p>
<p>After network changes, paths may not be recoverable. In this case, waiting for the path to
become idle may take longer than what is desirable. If <ahref="trait.NetworkChangeHint.html#tymethod.is_path_recoverable"title="method noq_proto::connection::NetworkChangeHint::is_path_recoverable::is_path_recoverable"><code>Self::is_path_recoverable</code></a>
returns <code>false</code>, a multipath-enabled, client-side connection will establish a new path to
with events of the same <ahref="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html"title="struct std::time::Instant"><code>Instant</code></a> may be interleaved in any order with a
call to <ahref="struct.Connection.html#method.handle_event"title="method noq_proto::Connection::handle_event"><code>handle_event</code></a> at that same instant; however
events or timeouts with different instants must not be interleaved.</p>
</div></details><h2id="implementations"class="section-header">Implementations<ahref="#implementations"class="anchor">§</a></h2><divid="implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Connection"class="impl"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#317-7138">Source</a><ahref="#impl-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.poll_timeout"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#457-459">Source</a><h4class="code-header">pub fn <ahref="#method.poll_timeout"class="fn">poll_timeout</a>(&mut self) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html"title="struct std::time::Instant">Instant</a>></h4></section></summary><divclass="docblock"><p>Returns the next time at which <code>handle_timeout</code> should be called</p>
</div></details><h2id="implementations"class="section-header">Implementations<ahref="#implementations"class="anchor">§</a></h2><divid="implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Connection"class="impl"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#317-7153">Source</a><ahref="#impl-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.poll_timeout"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#457-459">Source</a><h4class="code-header">pub fn <ahref="#method.poll_timeout"class="fn">poll_timeout</a>(&mut self) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html"title="struct std::time::Instant">Instant</a>></h4></section></summary><divclass="docblock"><p>Returns the next time at which <code>handle_timeout</code> should be called</p>
<p>The value returned may change after:</p>
<ul>
<li>the application performed some I/O on the connection</li>
@@ -124,42 +124,42 @@ idle time. Setting <code>None</code> disables the timeout and stops the timer.</
</ul>
<p><code>max_datagrams</code> specifies how many datagrams can be returned inside a
single Transmit using GSO. This must be at least 1.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.handle_event"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2174-2247">Source</a><h4class="code-header">pub fn <ahref="#method.handle_event"class="fn">handle_event</a>(&mut self, event: <aclass="struct"href="struct.ConnectionEvent.html"title="struct noq_proto::ConnectionEvent">ConnectionEvent</a>)</h4></section></summary><divclass="docblock"><p>Process <code>ConnectionEvent</code>s generated by the associated <code>Endpoint</code></p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.handle_event"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2178-2251">Source</a><h4class="code-header">pub fn <ahref="#method.handle_event"class="fn">handle_event</a>(&mut self, event: <aclass="struct"href="struct.ConnectionEvent.html"title="struct noq_proto::ConnectionEvent">ConnectionEvent</a>)</h4></section></summary><divclass="docblock"><p>Process <code>ConnectionEvent</code>s generated by the associated <code>Endpoint</code></p>
<p>Will execute protocol logic upon receipt of a connection event, in turn preparing signals
(including application <code>Event</code>s, <code>EndpointEvent</code>s and outgoing datagrams) that should be
<p>This does not ensure delivery of outstanding data. It is the application’s responsibility to
call this only when all important communications have been completed, e.g. by calling
<ahref="struct.SendStream.html#method.finish"title="method noq_proto::SendStream::finish"><code>SendStream::finish</code></a> on outstanding streams and waiting for the corresponding
<p>If <ahref="struct.Streams.html#method.send_streams"title="method noq_proto::Streams::send_streams"><code>Streams::send_streams</code></a> returns 0, all outstanding stream data has been
delivered. There may still be data from the peer that has not been received.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.ping"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2618-2624">Source</a><h4class="code-header">pub fn <ahref="#method.ping"class="fn">ping</a>(&mut self)</h4></section></summary><divclass="docblock"><p>Ping the remote endpoint</p>
<p>Causes an ACK-eliciting packet to be transmitted on the connection.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.ping_path"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2621-2628">Source</a><h4class="code-header">pub fn <ahref="#method.ping_path"class="fn">ping_path</a>(&mut self, path: <aclass="struct"href="struct.PathId.html"title="struct noq_proto::PathId">PathId</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><<aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <aclass="struct"href="struct.ClosedPath.html"title="struct noq_proto::ClosedPath">ClosedPath</a>></h4></section></summary><divclass="docblock"><p>Ping the remote endpoint over a specific path</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.ping_path"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2629-2636">Source</a><h4class="code-header">pub fn <ahref="#method.ping_path"class="fn">ping_path</a>(&mut self, path: <aclass="struct"href="struct.PathId.html"title="struct noq_proto::PathId">PathId</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><<aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <aclass="struct"href="struct.ClosedPath.html"title="struct noq_proto::ClosedPath">ClosedPath</a>></h4></section></summary><divclass="docblock"><p>Ping the remote endpoint over a specific path</p>
<p>Causes an ACK-eliciting packet to be transmitted on the path.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_handshaking"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2661-2663">Source</a><h4class="code-header">pub fn <ahref="#method.is_handshaking"class="fn">is_handshaking</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether the connection is in the process of being established</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_handshaking"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2669-2671">Source</a><h4class="code-header">pub fn <ahref="#method.is_handshaking"class="fn">is_handshaking</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether the connection is in the process of being established</p>
<p>If this returns <code>false</code>, the connection may be either established or closed, signaled by the
emission of a <ahref="enum.Event.html#variant.Connected"title="variant noq_proto::Event::Connected"><code>Connected</code></a> or <ahref="enum.Event.html#variant.ConnectionLost"title="variant noq_proto::Event::ConnectionLost"><code>ConnectionLost</code></a>
event respectively. Note that locally-initiated closes via <ahref="struct.Connection.html#method.close"title="method noq_proto::Connection::close"><code>close()</code></a> do not
emit a <code>ConnectionLost</code> event.</p>
<p>For an established connection this essentially means the handshake is <strong>completed</strong>,
but not necessarily yet confirmed.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_closed"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2675-2677">Source</a><h4class="code-header">pub fn <ahref="#method.is_closed"class="fn">is_closed</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether the connection is closed</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_closed"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2683-2685">Source</a><h4class="code-header">pub fn <ahref="#method.is_closed"class="fn">is_closed</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether the connection is closed</p>
<p>Closed connections cannot transport any further data. A connection becomes closed when
either peer application intentionally closes it, or when either transport layer detects an
error such as a time-out or certificate validation failure.</p>
@@ -167,24 +167,24 @@ error such as a time-out or certificate validation failure.</p>
connection is closed by the peer or due to an error. When the local application closes
the connection via <ahref="struct.Connection.html#method.close"title="method noq_proto::Connection::close"><code>close()</code></a>, no <code>ConnectionLost</code> event is emitted;
instead, pending operations fail with <ahref="enum.ConnectionError.html#variant.LocallyClosed"title="variant noq_proto::ConnectionError::LocallyClosed"><code>ConnectionError::LocallyClosed</code></a>.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_drained"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2683-2685">Source</a><h4class="code-header">pub fn <ahref="#method.is_drained"class="fn">is_drained</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether there is no longer any need to keep the connection around</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_drained"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2691-2693">Source</a><h4class="code-header">pub fn <ahref="#method.is_drained"class="fn">is_drained</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether there is no longer any need to keep the connection around</p>
<p>Closed connections become drained after a brief timeout to absorb any remaining in-flight
packets from the peer. All drained connections have been closed.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.accepted_0rtt"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2690-2692">Source</a><h4class="code-header">pub fn <ahref="#method.accepted_0rtt"class="fn">accepted_0rtt</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>For clients, if the peer accepted the 0-RTT data packets</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.accepted_0rtt"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2698-2700">Source</a><h4class="code-header">pub fn <ahref="#method.accepted_0rtt"class="fn">accepted_0rtt</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>For clients, if the peer accepted the 0-RTT data packets</p>
<p>The value is meaningless until after the handshake completes.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.has_0rtt"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2695-2697">Source</a><h4class="code-header">pub fn <ahref="#method.has_0rtt"class="fn">has_0rtt</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether 0-RTT is/was possible during the handshake</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.has_pending_retransmits"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2700-2702">Source</a><h4class="code-header">pub fn <ahref="#method.has_pending_retransmits"class="fn">has_pending_retransmits</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether there are any pending retransmits</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.side"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2705-2707">Source</a><h4class="code-header">pub fn <ahref="#method.side"class="fn">side</a>(&self) -><aclass="enum"href="enum.Side.html"title="enum noq_proto::Side">Side</a></h4></section></summary><divclass="docblock"><p>Look up whether we’re the client or server of this Connection</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.has_0rtt"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2703-2705">Source</a><h4class="code-header">pub fn <ahref="#method.has_0rtt"class="fn">has_0rtt</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether 0-RTT is/was possible during the handshake</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.has_pending_retransmits"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2708-2710">Source</a><h4class="code-header">pub fn <ahref="#method.has_pending_retransmits"class="fn">has_pending_retransmits</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether there are any pending retransmits</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.side"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2713-2715">Source</a><h4class="code-header">pub fn <ahref="#method.side"class="fn">side</a>(&self) -><aclass="enum"href="enum.Side.html"title="enum noq_proto::Side">Side</a></h4></section></summary><divclass="docblock"><p>Look up whether we’re the client or server of this Connection</p>
) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><<aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="enum"href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html"title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>>, <aclass="struct"href="struct.ClosedPath.html"title="struct noq_proto::ClosedPath">ClosedPath</a>></h4></section></summary><divclass="docblock"><p>Get the address observed by the remote over the given path</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.rtt"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2722-2724">Source</a><h4class="code-header">pub fn <ahref="#method.rtt"class="fn">rtt</a>(&self, path_id: <aclass="struct"href="struct.PathId.html"title="struct noq_proto::PathId">PathId</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html"title="struct core::time::Duration">Duration</a>></h4></section></summary><divclass="docblock"><p>Current best estimate of this connection’s latency (round-trip-time)</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.congestion_state"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2727-2729">Source</a><h4class="code-header">pub fn <ahref="#method.congestion_state"class="fn">congestion_state</a>(&self, path_id: <aclass="struct"href="struct.PathId.html"title="struct noq_proto::PathId">PathId</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><&dyn <aclass="trait"href="congestion/trait.Controller.html"title="trait noq_proto::congestion::Controller">Controller</a>></h4></section></summary><divclass="docblock"><p>Current state of this connection’s congestion controller, for debugging purposes</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.set_max_concurrent_streams"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2735-2741">Source</a><h4class="code-header">pub fn <ahref="#method.set_max_concurrent_streams"class="fn">set_max_concurrent_streams</a>(&mut self, dir: <aclass="enum"href="enum.Dir.html"title="enum noq_proto::Dir">Dir</a>, count: <aclass="struct"href="struct.VarInt.html"title="struct noq_proto::VarInt">VarInt</a>)</h4></section></summary><divclass="docblock"><p>Modify the number of remotely initiated streams that may be concurrently open</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.rtt"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2730-2732">Source</a><h4class="code-header">pub fn <ahref="#method.rtt"class="fn">rtt</a>(&self, path_id: <aclass="struct"href="struct.PathId.html"title="struct noq_proto::PathId">PathId</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><<aclass="struct"href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html"title="struct core::time::Duration">Duration</a>></h4></section></summary><divclass="docblock"><p>Current best estimate of this connection’s latency (round-trip-time)</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.congestion_state"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2735-2737">Source</a><h4class="code-header">pub fn <ahref="#method.congestion_state"class="fn">congestion_state</a>(&self, path_id: <aclass="struct"href="struct.PathId.html"title="struct noq_proto::PathId">PathId</a>) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html"title="enum core::option::Option">Option</a><&dyn <aclass="trait"href="congestion/trait.Controller.html"title="trait noq_proto::congestion::Controller">Controller</a>></h4></section></summary><divclass="docblock"><p>Current state of this connection’s congestion controller, for debugging purposes</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.set_max_concurrent_streams"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2743-2749">Source</a><h4class="code-header">pub fn <ahref="#method.set_max_concurrent_streams"class="fn">set_max_concurrent_streams</a>(&mut self, dir: <aclass="enum"href="enum.Dir.html"title="enum noq_proto::Dir">Dir</a>, count: <aclass="struct"href="struct.VarInt.html"title="struct noq_proto::VarInt">VarInt</a>)</h4></section></summary><divclass="docblock"><p>Modify the number of remotely initiated streams that may be concurrently open</p>
<p>No streams may be opened by the peer unless fewer than <code>count</code> are already open. Large
<code>count</code>s increase both minimum and worst-case memory consumption.</p>
@@ -195,16 +195,16 @@ actively reduce paths they must be closed using <a href="struct.Connection.html#
can also be used to close not-yet-opened paths.</p>
<p>If multipath is not negotiated (see the <ahref="struct.TransportConfig.html"title="struct noq_proto::TransportConfig"><code>TransportConfig</code></a>) this can not enable
multipath and will fail.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.max_concurrent_streams"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2792-2794">Source</a><h4class="code-header">pub fn <ahref="#method.max_concurrent_streams"class="fn">max_concurrent_streams</a>(&self, dir: <aclass="enum"href="enum.Dir.html"title="enum noq_proto::Dir">Dir</a>) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><divclass="docblock"><p>Current number of remotely initiated streams that may be concurrently open</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.max_concurrent_streams"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2800-2802">Source</a><h4class="code-header">pub fn <ahref="#method.max_concurrent_streams"class="fn">max_concurrent_streams</a>(&self, dir: <aclass="enum"href="enum.Dir.html"title="enum noq_proto::Dir">Dir</a>) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><divclass="docblock"><p>Current number of remotely initiated streams that may be concurrently open</p>
<p>If the target for this limit is reduced using <ahref="struct.Connection.html#method.set_max_concurrent_streams"title="method noq_proto::Connection::set_max_concurrent_streams"><code>set_max_concurrent_streams</code></a>,
it will not change immediately, even if fewer streams are open. Instead, it will
decrement by one for each time a remotely initiated stream of matching directionality is closed.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_multipath_negotiated"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2812-2816">Source</a><h4class="code-header">pub fn <ahref="#method.is_multipath_negotiated"class="fn">is_multipath_negotiated</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether the Multipath for QUIC extension is enabled.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.is_multipath_negotiated"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#2820-2824">Source</a><h4class="code-header">pub fn <ahref="#method.is_multipath_negotiated"class="fn">is_multipath_negotiated</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Whether the Multipath for QUIC extension is enabled.</p>
<p>Multipath is only enabled after the handshake is completed and if it was enabled by both
@@ -219,26 +219,26 @@ paths as non recoverable when necessary accelerates connectivity re-establishmen
allow it altogether.</p>
<p>The optional <code>hint</code> allows callers to indicate when paths are non-recoverable and should be
migrated to new a <ahref="struct.PathId.html"title="struct noq_proto::PathId"><code>PathId</code></a>.</p>
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.current_mtu"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#6926-6933">Source</a><h4class="code-header">pub fn <ahref="#method.current_mtu"class="fn">current_mtu</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a></h4></section></summary><divclass="docblock"><p>Storage size required for the largest packet that can be transmitted on all currently
</div></details><detailsclass="toggle method-toggle"open><summary><sectionid="method.current_mtu"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#6941-6948">Source</a><h4class="code-header">pub fn <ahref="#method.current_mtu"class="fn">current_mtu</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a></h4></section></summary><divclass="docblock"><p>Storage size required for the largest packet that can be transmitted on all currently
available paths</p>
<p>Buffers passed to <ahref="struct.Connection.html#method.poll_transmit"title="method noq_proto::Connection::poll_transmit"><code>Connection::poll_transmit</code></a> should be at least this large.</p>
<p>When multipath is enabled, this value is the minimum MTU across all available paths.</p>
) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><<aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <aclass="enum"href="n0_nat_traversal/enum.Error.html"title="enum noq_proto::n0_nat_traversal::Error">Error</a>></h4></section></summary><divclass="docblock"><p>Add addresses the local endpoint considers are reachable for nat traversal.</p>
) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><<aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <aclass="enum"href="n0_nat_traversal/enum.Error.html"title="enum noq_proto::n0_nat_traversal::Error">Error</a>></h4></section></summary><divclass="docblock"><p>Removes an address the endpoing no longer considers reachable for nat traversal</p>
<p>Addresses not present in the set will be silently ignored.</p>
) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><<aclass="struct"href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="enum"href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html"title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>>, <aclass="enum"href="n0_nat_traversal/enum.Error.html"title="enum noq_proto::n0_nat_traversal::Error">Error</a>></h4></section></summary><divclass="docblock"><p>Get the current local nat traversal addresses</p>
) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><<aclass="struct"href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="enum"href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html"title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>>, <aclass="enum"href="n0_nat_traversal/enum.Error.html"title="enum noq_proto::n0_nat_traversal::Error">Error</a>></h4></section></summary><divclass="docblock"><p>Get the currently advertised nat traversal addresses by the server</p>
) -><aclass="enum"href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html"title="enum core::result::Result">Result</a><<aclass="struct"href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html"title="struct alloc::vec::Vec">Vec</a><<aclass="enum"href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html"title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>>, <aclass="enum"href="n0_nat_traversal/enum.Error.html"title="enum noq_proto::n0_nat_traversal::Error">Error</a>></h4></section></summary><divclass="docblock"><p>Initiates a new nat traversal round</p>
@@ -249,7 +249,7 @@ round is initiated, the previous one is cancelled.</p>
4-tuple.</p>
<p>Returns the server addresses that are now being probed. If addresses fail due to
spurious errors, these might succeed later and not be returned in this set.</p>
</div></details></div></details></div><h2id="trait-implementations"class="section-header">Trait Implementations<ahref="#trait-implementations"class="anchor">§</a></h2><divid="trait-implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Debug-for-Connection"class="impl"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#7140-7146">Source</a><ahref="#impl-Debug-for-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html"title="trait core::fmt::Debug">Debug</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.fmt"class="method trait-impl"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#7141-7145">Source</a><ahref="#method.fmt"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt"class="fn">fmt</a>(&self, f: &mut <aclass="struct"href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html"title="struct core::fmt::Formatter">Formatter</a><'_>) -><aclass="type"href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html"title="type core::fmt::Result">Result</a></h4></section></summary><divclass='docblock'>Formats the value using the given formatter. <ahref="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2id="synthetic-implementations"class="section-header">Auto Trait Implementations<ahref="#synthetic-implementations"class="anchor">§</a></h2><divid="synthetic-implementations-list"><sectionid="impl-Freeze-for-Connection"class="impl"><ahref="#impl-Freeze-for-Connection"class="anchor">§</a><h3class="code-header">impl !<aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html"title="trait core::marker::Freeze">Freeze</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-RefUnwindSafe-for-Connection"class="impl"><ahref="#impl-RefUnwindSafe-for-Connection"class="anchor">§</a><h3class="code-header">impl !<aclass="trait"href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html"title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-Send-for-Connection"class="impl"><ahref="#impl-Send-for-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html"title="trait core::marker::Send">Send</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-Sync-for-Connection"class="impl"><ahref="#impl-Sync-for-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html"title="trait core::marker::Sync">Sync</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-Unpin-for-Connection"class="impl"><ahref="#impl-Unpin-for-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html"title="trait core::marker::Unpin">Unpin</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-UnwindSafe-for-Connection"class="impl"><ahref="#impl-UnwindSafe-for-Connection"class="anchor">§</a><h3class="code-header">impl !<aclass="trait"href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html"title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section></div><h2id="blanket-implementations"class="section-header">Blanket Implementations<ahref="#blanket-implementations"class="anchor">§</a></h2><divid="blanket-implementations-list"><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Any-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#138">Source</a><ahref="#impl-Any-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html"title="trait core::any::Any">Any</a> for T<divclass="where">where
</div></details></div></details></div><h2id="trait-implementations"class="section-header">Trait Implementations<ahref="#trait-implementations"class="anchor">§</a></h2><divid="trait-implementations-list"><detailsclass="toggle implementors-toggle"open><summary><sectionid="impl-Debug-for-Connection"class="impl"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#7155-7161">Source</a><ahref="#impl-Debug-for-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html"title="trait core::fmt::Debug">Debug</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.fmt"class="method trait-impl"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#7156-7160">Source</a><ahref="#method.fmt"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt"class="fn">fmt</a>(&self, f: &mut <aclass="struct"href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html"title="struct core::fmt::Formatter">Formatter</a><'_>) -><aclass="type"href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html"title="type core::fmt::Result">Result</a></h4></section></summary><divclass='docblock'>Formats the value using the given formatter. <ahref="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2id="synthetic-implementations"class="section-header">Auto Trait Implementations<ahref="#synthetic-implementations"class="anchor">§</a></h2><divid="synthetic-implementations-list"><sectionid="impl-Freeze-for-Connection"class="impl"><ahref="#impl-Freeze-for-Connection"class="anchor">§</a><h3class="code-header">impl !<aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html"title="trait core::marker::Freeze">Freeze</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-RefUnwindSafe-for-Connection"class="impl"><ahref="#impl-RefUnwindSafe-for-Connection"class="anchor">§</a><h3class="code-header">impl !<aclass="trait"href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html"title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-Send-for-Connection"class="impl"><ahref="#impl-Send-for-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html"title="trait core::marker::Send">Send</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-Sync-for-Connection"class="impl"><ahref="#impl-Sync-for-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html"title="trait core::marker::Sync">Sync</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-Unpin-for-Connection"class="impl"><ahref="#impl-Unpin-for-Connection"class="anchor">§</a><h3class="code-header">impl <aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html"title="trait core::marker::Unpin">Unpin</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section><sectionid="impl-UnwindSafe-for-Connection"class="impl"><ahref="#impl-UnwindSafe-for-Connection"class="anchor">§</a><h3class="code-header">impl !<aclass="trait"href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html"title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <aclass="struct"href="struct.Connection.html"title="struct noq_proto::Connection">Connection</a></h3></section></div><h2id="blanket-implementations"class="section-header">Blanket Implementations<ahref="#blanket-implementations"class="anchor">§</a></h2><divid="blanket-implementations-list"><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Any-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#138">Source</a><ahref="#impl-Any-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html"title="trait core::any::Any">Any</a> for T<divclass="where">where
T: 'static + ?<aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.type_id"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">Source</a><ahref="#method.type_id"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id"class="fn">type_id</a>(&self) -><aclass="struct"href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html"title="struct core::any::TypeId">TypeId</a></h4></section></summary><divclass='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <ahref="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-Borrow%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212">Source</a><ahref="#impl-Borrow%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html"title="trait core::borrow::Borrow">Borrow</a><T> for T<divclass="where">where
T: ?<aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.borrow"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214">Source</a><ahref="#method.borrow"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow"class="fn">borrow</a>(&self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&T</a></h4></section></summary><divclass='docblock'>Immutably borrows from an owned value. <ahref="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-BorrowMut%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">Source</a><ahref="#impl-BorrowMut%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html"title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<divclass="where">where
T: ?<aclass="trait"href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html"title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.borrow_mut"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#222">Source</a><ahref="#method.borrow_mut"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut"class="fn">borrow_mut</a>(&mut self) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&mut T</a></h4></section></summary><divclass='docblock'>Mutably borrows from an owned value. <ahref="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><detailsclass="toggle implementors-toggle"><summary><sectionid="impl-From%3CT%3E-for-T"class="impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#785">Source</a><ahref="#impl-From%3CT%3E-for-T"class="anchor">§</a><h3class="code-header">impl<T><aclass="trait"href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html"title="trait core::convert::From">From</a><T> for T</h3></section></summary><divclass="impl-items"><detailsclass="toggle method-toggle"open><summary><sectionid="method.from"class="method trait-impl"><aclass="src rightside"href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#788">Source</a><ahref="#method.from"class="anchor">§</a><h4class="code-header">fn <ahref="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from"class="fn">from</a>(t: T) -> T</h4></section></summary><divclass="docblock"><p>Returns the argument unchanged.</p>
}</code></pre><detailsclass="toggle top-doc"open><summaryclass="hideme"><span>Expand description</span></summary><divclass="docblock"><p>Hints when the caller identifies a network change.</p>
</div></details><h2id="required-methods"class="section-header">Required Methods<ahref="#required-methods"class="anchor">§</a></h2><divclass="methods"><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.is_path_recoverable"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#7158">Source</a><h4class="code-header">fn <ahref="#tymethod.is_path_recoverable"class="fn">is_path_recoverable</a>(&self, path_id: <aclass="struct"href="struct.PathId.html"title="struct noq_proto::PathId">PathId</a>, network_path: <aclass="struct"href="struct.FourTuple.html"title="struct noq_proto::FourTuple">FourTuple</a>) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Inform the connection if a path may recover after a network change.</p>
</div></details><h2id="required-methods"class="section-header">Required Methods<ahref="#required-methods"class="anchor">§</a></h2><divclass="methods"><detailsclass="toggle method-toggle"open><summary><sectionid="tymethod.is_path_recoverable"class="method"><aclass="src rightside"href="../src/noq_proto/connection/mod.rs.html#7173">Source</a><h4class="code-header">fn <ahref="#tymethod.is_path_recoverable"class="fn">is_path_recoverable</a>(&self, path_id: <aclass="struct"href="struct.PathId.html"title="struct noq_proto::PathId">PathId</a>, network_path: <aclass="struct"href="struct.FourTuple.html"title="struct noq_proto::FourTuple">FourTuple</a>) -><aclass="primitive"href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><divclass="docblock"><p>Inform the connection if a path may recover after a network change.</p>
<p>After network changes, paths may not be recoverable. In this case, waiting for the path to
become idle may take longer than what is desirable. If <ahref="trait.NetworkChangeHint.html#tymethod.is_path_recoverable"><code>Self::is_path_recoverable</code></a>
returns <code>false</code>, a multipath-enabled, client-side connection will establish a new path to
<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="API documentation for the Rust `server` mod in crate `perf`."><title>perf::server - 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><linkrel="stylesheet"href="../../static.files/normalize-9960930a.css"><linkrel="stylesheet"href="../../static.files/rustdoc-ca0dd0c4.css"><metaname="rustdoc-vars"data-root-path="../../"data-static-root-path="../../static.files/"data-current-crate="perf"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"><scriptsrc="../../static.files/storage-e2aeef58.js"></script><scriptdefersrc="../sidebar-items.js"></script><scriptdefersrc="../../static.files/main-ce535bd0.js"></script><noscript><linkrel="stylesheet"href="../../static.files/noscript-263c88ec.css"></noscript><linkrel="alternate icon"type="image/png"href="../../static.files/favicon-32x32-eab170b8.png"><linkrel="icon"type="image/svg+xml"href="../../static.files/favicon-044be391.svg"></head><bodyclass="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><ahref="#">Module server</a></h2></rustdoc-topbar><navclass="sidebar"><divclass="sidebar-crate"><h2><ahref="../../perf/index.html">perf</a><spanclass="version">0.2.0</span></h2></div><divclass="sidebar-elems"><sectionid="rustdoc-toc"><h2class="location"><ahref="#">Module server</a></h2><h3><ahref="#structs">Module Items</a></h3><ulclass="block"><li><ahref="#structs"title="Structs">Structs</a></li><li><ahref="#functions"title="Functions">Functions</a></li></ul></section><divid="rustdoc-modnav"><h2class="in-crate"><ahref="../index.html">In crate perf</a></h2></div></div></nav><divclass="sidebar-resizer"title="Drag to resize sidebar"></div><main><divclass="width-limiter"><sectionid="main-content"class="content"><divclass="main-heading"><divclass="rustdoc-breadcrumbs"><ahref="../index.html">perf</a></div><h1>Module <span>server</span> <buttonid="copy-path"title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><spanclass="sub-heading"><aclass="src"href="../../src/perf/server.rs.html#1-202">Source</a></span></div><h2id="structs"class="section-header">Structs<ahref="#structs"class="anchor">§</a></h2><dlclass="item-table"><dt><aclass="struct"href="struct.Opt.html"title="struct perf::server::Opt">Opt</a></dt></dl><h2id="functions"class="section-header">Functions<ahref="#functions"class="anchor">§</a></h2><dlclass="item-table"><dt><aclass="fn"href="fn.run.html"title="fn perf::server::run">run</a></dt></dl></section></div></main></body></html>
<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><metaname="generator"content="rustdoc"><metaname="description"content="API documentation for the Rust `server` mod in crate `perf`."><title>perf::server - 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><linkrel="stylesheet"href="../../static.files/normalize-9960930a.css"><linkrel="stylesheet"href="../../static.files/rustdoc-ca0dd0c4.css"><metaname="rustdoc-vars"data-root-path="../../"data-static-root-path="../../static.files/"data-current-crate="perf"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"><scriptsrc="../../static.files/storage-e2aeef58.js"></script><scriptdefersrc="../sidebar-items.js"></script><scriptdefersrc="../../static.files/main-ce535bd0.js"></script><noscript><linkrel="stylesheet"href="../../static.files/noscript-263c88ec.css"></noscript><linkrel="alternate icon"type="image/png"href="../../static.files/favicon-32x32-eab170b8.png"><linkrel="icon"type="image/svg+xml"href="../../static.files/favicon-044be391.svg"></head><bodyclass="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><ahref="#">Module server</a></h2></rustdoc-topbar><navclass="sidebar"><divclass="sidebar-crate"><h2><ahref="../../perf/index.html">perf</a><spanclass="version">0.2.0</span></h2></div><divclass="sidebar-elems"><sectionid="rustdoc-toc"><h2class="location"><ahref="#">Module server</a></h2><h3><ahref="#structs">Module Items</a></h3><ulclass="block"><li><ahref="#structs"title="Structs">Structs</a></li><li><ahref="#functions"title="Functions">Functions</a></li></ul></section><divid="rustdoc-modnav"><h2class="in-crate"><ahref="../index.html">In crate perf</a></h2></div></div></nav><divclass="sidebar-resizer"title="Drag to resize sidebar"></div><main><divclass="width-limiter"><sectionid="main-content"class="content"><divclass="main-heading"><divclass="rustdoc-breadcrumbs"><ahref="../index.html">perf</a></div><h1>Module <span>server</span> <buttonid="copy-path"title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><spanclass="sub-heading"><aclass="src"href="../../src/perf/server.rs.html#1-209">Source</a></span></div><h2id="structs"class="section-header">Structs<ahref="#structs"class="anchor">§</a></h2><dlclass="item-table"><dt><aclass="struct"href="struct.Opt.html"title="struct perf::server::Opt">Opt</a></dt></dl><h2id="functions"class="section-header">Functions<ahref="#functions"class="anchor">§</a></h2><dlclass="item-table"><dt><aclass="fn"href="fn.run.html"title="fn perf::server::run">run</a></dt></dl></section></div></main></body></html>
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.