Files
noq/pr/579/docs/noq/trait.ConnectionIdGenerator.html
T

21 lines
9.0 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 - 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="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/index.html">noq</a><span class="version">0.17.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</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</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"></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::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::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::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"><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::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"><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"><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"><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::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::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 href="#impl-ConnectionIdGenerator-for-HashedConnectionIdGenerator" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConnectionIdGenerator.html" title="trait noq::ConnectionIdGenerator">ConnectionIdGenerator</a> for HashedConnectionIdGenerator</h3></section><section id="impl-ConnectionIdGenerator-for-RandomConnectionIdGenerator" class="impl"><a href="#impl-ConnectionIdGenerator-for-RandomConnectionIdGenerator" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConnectionIdGenerator.html" title="trait noq::ConnectionIdGenerator">ConnectionIdGenerator</a> for RandomConnectionIdGenerator</h3></section></div><script src="../trait.impl/noq_proto/cid_generator/trait.ConnectionIdGenerator.js" data-ignore-extern-crates="noq_proto" async></script></section></div></main></body></html>