Files
noq/pr/708/docs/noq_proto/trait.ConnectionIdGenerator.html
T

21 lines
9.9 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="Generates connection IDs for incoming connections"><title>ConnectionIdGenerator in noq_proto - 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_proto" 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="sidebar-items.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 trait"><!--[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="#">ConnectionIdGenerator</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../noq_proto/index.html">noq_<wbr>proto</a><span class="version">1.0.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Connection<wbr>IdGenerator</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.cid_len" title="cid_len">cid_len</a></li><li><a href="#tymethod.cid_lifetime" title="cid_lifetime">cid_lifetime</a></li><li><a href="#tymethod.generate_cid" title="generate_cid">generate_cid</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.validate" title="validate">validate</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate noq_<wbr>proto</a></h2></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"><div class="rustdoc-breadcrumbs"><a href="index.html">noq_proto</a></div><h1>Trait <span class="trait">Connection<wbr>IdGenerator</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_proto/cid_generator.rs.html#11-34">Source</a> </span></div><pre class="rust item-decl"><code>pub trait ConnectionIdGenerator: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required methods
fn <a href="#tymethod.generate_cid" class="fn">generate_cid</a>(&amp;mut self) -&gt; <a class="struct" href="struct.ConnectionId.html" title="struct noq_proto::ConnectionId">ConnectionId</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.cid_len" class="fn">cid_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.cid_lifetime" class="fn">cid_lifetime</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;;
// Provided method
fn <a href="#method.validate" class="fn">validate</a>(&amp;self, _cid: <a class="struct" href="struct.ConnectionId.html" title="struct noq_proto::ConnectionId">ConnectionId</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="struct.InvalidCid.html" title="struct noq_proto::InvalidCid">InvalidCid</a>&gt; { ... }
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Generates connection IDs for incoming connections</p>
</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.generate_cid" class="method"><a class="src rightside" href="../src/noq_proto/cid_generator.rs.html#19">Source</a><h4 class="code-header">fn <a href="#tymethod.generate_cid" class="fn">generate_cid</a>(&amp;mut self) -&gt; <a class="struct" href="struct.ConnectionId.html" title="struct noq_proto::ConnectionId">ConnectionId</a></h4></section></summary><div class="docblock"><p>Generates a new CID</p>
<p>Connection IDs MUST NOT contain any information that can be used by
an external observer (that is, one that does not cooperate with the
issuer) to correlate them with other connection IDs for the same
connection. They MUST have high entropy, e.g. due to encrypted data
or cryptographic-grade random data.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.cid_len" class="method"><a class="src rightside" href="../src/noq_proto/cid_generator.rs.html#29">Source</a><h4 class="code-header">fn <a href="#tymethod.cid_len" class="fn">cid_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the length of a CID for connections created by this generator</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.cid_lifetime" class="method"><a class="src rightside" href="../src/noq_proto/cid_generator.rs.html#33">Source</a><h4 class="code-header">fn <a href="#tymethod.cid_lifetime" class="fn">cid_lifetime</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the lifetime of generated Connection IDs</p>
<p>Connection IDs will be retired after the returned <code>Duration</code>, if any. Assumed to be constant.</p>
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.validate" class="method"><a class="src rightside" href="../src/noq_proto/cid_generator.rs.html#24-26">Source</a><h4 class="code-header">fn <a href="#method.validate" class="fn">validate</a>(&amp;self, _cid: <a class="struct" href="struct.ConnectionId.html" title="struct noq_proto::ConnectionId">ConnectionId</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="struct.InvalidCid.html" title="struct noq_proto::InvalidCid">InvalidCid</a>&gt;</h4></section></summary><div class="docblock"><p>Quickly determine whether <code>cid</code> could have been generated by this generator</p>
<p>False positives are permitted, but increase the cost of handling invalid packets.</p>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-ConnectionIdGenerator-for-HashedConnectionIdGenerator" class="impl"><a class="src rightside" href="../src/noq_proto/cid_generator.rs.html#136-166">Source</a><a href="#impl-ConnectionIdGenerator-for-HashedConnectionIdGenerator" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConnectionIdGenerator.html" title="trait noq_proto::ConnectionIdGenerator">ConnectionIdGenerator</a> for <a class="struct" href="struct.HashedConnectionIdGenerator.html" title="struct noq_proto::HashedConnectionIdGenerator">HashedConnectionIdGenerator</a></h3></section><section id="impl-ConnectionIdGenerator-for-RandomConnectionIdGenerator" class="impl"><a class="src rightside" href="../src/noq_proto/cid_generator.rs.html#78-94">Source</a><a href="#impl-ConnectionIdGenerator-for-RandomConnectionIdGenerator" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConnectionIdGenerator.html" title="trait noq_proto::ConnectionIdGenerator">ConnectionIdGenerator</a> for <a class="struct" href="struct.RandomConnectionIdGenerator.html" title="struct noq_proto::RandomConnectionIdGenerator">RandomConnectionIdGenerator</a></h3></section></div><script src="../trait.impl/noq_proto/cid_generator/trait.ConnectionIdGenerator.js" async></script></section></div></main></body></html>