deploy: de20f3ece198d9600e85655bf86a2d39bd2e86cc

This commit is contained in:
matheus23
2026-01-26 12:47:09 +00:00
parent ed4623b055
commit fdb7f4882e
9 changed files with 86 additions and 74 deletions
+1 -1
View File
@@ -1 +1 @@
<!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="Documentation for Rustdoc"><title>Help</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="bulk" 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="./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 sys"><!--[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="#">All</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="./index.html"><img class="rust-logo" src="./static.files/rust-logo-9a9549ea.svg" alt="logo"></a><h2><a href="./index.html">Rustdoc</a><span class="version">1.92.0-nightly</span></h2></div><div class="version">(b6f0945e4 2025-10-08)</div><h2 class="location">Help</h2><div class="sidebar-elems"></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>Rustdoc help</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section><p>You need to enable JavaScript to use keyboard commands or search.</p><p>For more information, browse the <a href="https://doc.rust-lang.org/nightly/rustdoc/">rustdoc handbook</a>.</p></section></noscript></section></div></main></body></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="Documentation for Rustdoc"><title>Help</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="set_up_connection" 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="./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 sys"><!--[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="#">All</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="./index.html"><img class="rust-logo" src="./static.files/rust-logo-9a9549ea.svg" alt="logo"></a><h2><a href="./index.html">Rustdoc</a><span class="version">1.92.0-nightly</span></h2></div><div class="version">(b6f0945e4 2025-10-08)</div><h2 class="location">Help</h2><div class="sidebar-elems"></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>Rustdoc help</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section><p>You need to enable JavaScript to use keyboard commands or search.</p><p>For more information, browse the <a href="https://doc.rust-lang.org/nightly/rustdoc/">rustdoc handbook</a>.</p></section></noscript></section></div></main></body></html>
@@ -1,2 +1,2 @@
<!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="iroh NAT Traversal"><title>iroh_quinn_proto::iroh_hp - 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="iroh_quinn_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 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><a href="#">Module iroh_hp</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn_proto/index.html">iroh_<wbr>quinn_<wbr>proto</a><span class="version">0.14.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module iroh_hp</a></h2><h3><a href="#enums">Module Items</a></h3><ul class="block"><li><a href="#enums" title="Enums">Enums</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate iroh_<wbr>quinn_<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">iroh_quinn_proto</a></div><h1>Module <span>iroh_hp</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/iroh_quinn_proto/iroh_hp.rs.html#1-589">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>iroh NAT Traversal</p>
<!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="iroh NAT Traversal"><title>iroh_quinn_proto::iroh_hp - 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="iroh_quinn_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 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><a href="#">Module iroh_hp</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn_proto/index.html">iroh_<wbr>quinn_<wbr>proto</a><span class="version">0.14.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module iroh_hp</a></h2><h3><a href="#enums">Module Items</a></h3><ul class="block"><li><a href="#enums" title="Enums">Enums</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate iroh_<wbr>quinn_<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">iroh_quinn_proto</a></div><h1>Module <span>iroh_hp</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/iroh_quinn_proto/iroh_hp.rs.html#1-601">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>iroh NAT Traversal</p>
</div></details><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.Error.html" title="enum iroh_quinn_proto::iroh_hp::Error">Error</a></dt><dd>Errors that the nat traversal state might encounter.</dd><dt><a class="enum" href="enum.Event.html" title="enum iroh_quinn_proto::iroh_hp::Event">Event</a></dt><dd>Event emitted when the client receives ADD_ADDRESS or REMOVE_ADDRESS frames.</dd></dl></section></div></main></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
<!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="Settings of Rustdoc"><title>Settings</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="bulk" 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="./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 sys"><!--[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="#">All</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="./index.html"><img class="rust-logo" src="./static.files/rust-logo-9a9549ea.svg" alt="logo"></a><h2><a href="./index.html">Rustdoc</a><span class="version">1.92.0-nightly</span></h2></div><div class="version">(b6f0945e4 2025-10-08)</div><h2 class="location">Settings</h2><div class="sidebar-elems"></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>Rustdoc settings</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section>You need to enable JavaScript be able to update your settings.</section></noscript><script defer src="./static.files/settings-c38705f0.js"></script></section></div></main></body></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="Settings of Rustdoc"><title>Settings</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="set_up_connection" 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="./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 sys"><!--[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="#">All</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="./index.html"><img class="rust-logo" src="./static.files/rust-logo-9a9549ea.svg" alt="logo"></a><h2><a href="./index.html">Rustdoc</a><span class="version">1.92.0-nightly</span></h2></div><div class="version">(b6f0945e4 2025-10-08)</div><h2 class="location">Settings</h2><div class="sidebar-elems"></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>Rustdoc settings</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section>You need to enable JavaScript be able to update your settings.</section></noscript><script defer src="./static.files/settings-c38705f0.js"></script></section></div></main></body></html>
@@ -2,7 +2,7 @@
<a href=#2 id=2 data-nosnippet>2</a>
<a href=#3 id=3 data-nosnippet>3</a></span><span class="kw">use </span>std::{
<a href=#4 id=4 data-nosnippet>4</a> collections::hash_map::Entry,
<a href=#5 id=5 data-nosnippet>5</a> net::{IpAddr, SocketAddr},
<a href=#5 id=5 data-nosnippet>5</a> net::{IpAddr, Ipv4Addr, SocketAddr},
<a href=#6 id=6 data-nosnippet>6</a>};
<a href=#7 id=7 data-nosnippet>7</a>
<a href=#8 id=8 data-nosnippet>8</a><span class="kw">use </span>identity_hash::IntMap;
@@ -518,72 +518,84 @@
<a href=#518 id=518 data-nosnippet>518</a> IpAddr::V4(addr) <span class="kw">if </span>ipv6 =&gt; IpAddr::V6(addr.to_ipv6_mapped()),
<a href=#519 id=519 data-nosnippet>519</a> IpAddr::V4(<span class="kw">_</span>) =&gt; address,
<a href=#520 id=520 data-nosnippet>520</a> IpAddr::V6(<span class="kw">_</span>) <span class="kw">if </span>ipv6 =&gt; address,
<a href=#521 id=521 data-nosnippet>521</a> IpAddr::V6(addr) =&gt; IpAddr::V4(addr.to_ipv4()<span class="question-mark">?</span>),
<a href=#522 id=522 data-nosnippet>522</a> };
<a href=#523 id=523 data-nosnippet>523</a> <span class="prelude-val">Some</span>(ip)
<a href=#524 id=524 data-nosnippet>524</a>}
<a href=#525 id=525 data-nosnippet>525</a>
<a href=#526 id=526 data-nosnippet>526</a><span class="attr">#[cfg(test)]
<a href=#527 id=527 data-nosnippet>527</a></span><span class="kw">mod </span>tests {
<a href=#528 id=528 data-nosnippet>528</a> <span class="kw">use super</span>::<span class="kw-2">*</span>;
<a href=#529 id=529 data-nosnippet>529</a>
<a href=#530 id=530 data-nosnippet>530</a> <span class="attr">#[test]
<a href=#531 id=531 data-nosnippet>531</a> </span><span class="kw">fn </span>test_basic_server_state() {
<a href=#532 id=532 data-nosnippet>532</a> <span class="kw">let </span><span class="kw-2">mut </span>state = ServerState::new(<span class="number">2</span>, <span class="number">2</span>);
<a href=#521 id=521 data-nosnippet>521</a> IpAddr::V6(addr) =&gt; {
<a href=#522 id=522 data-nosnippet>522</a> <span class="kw">if let </span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0xffff</span>, ab, cd] = addr.segments() {
<a href=#523 id=523 data-nosnippet>523</a> <span class="kw">let </span>[a, b] = ab.to_be_bytes();
<a href=#524 id=524 data-nosnippet>524</a> <span class="kw">let </span>[c, d] = cd.to_be_bytes();
<a href=#525 id=525 data-nosnippet>525</a> IpAddr::V4(Ipv4Addr::new(a, b, c, d))
<a href=#526 id=526 data-nosnippet>526</a> } <span class="kw">else </span>{
<a href=#527 id=527 data-nosnippet>527</a> <span class="kw">return </span><span class="prelude-val">None</span>;
<a href=#528 id=528 data-nosnippet>528</a> }
<a href=#529 id=529 data-nosnippet>529</a> }
<a href=#530 id=530 data-nosnippet>530</a> };
<a href=#531 id=531 data-nosnippet>531</a> <span class="prelude-val">Some</span>(ip)
<a href=#532 id=532 data-nosnippet>532</a>}
<a href=#533 id=533 data-nosnippet>533</a>
<a href=#534 id=534 data-nosnippet>534</a> state
<a href=#535 id=535 data-nosnippet>535</a> .handle_reach_out(
<a href=#536 id=536 data-nosnippet>536</a> ReachOut {
<a href=#537 id=537 data-nosnippet>537</a> round: <span class="number">1u32</span>.into(),
<a href=#538 id=538 data-nosnippet>538</a> ip: std::net::Ipv4Addr::LOCALHOST.into(),
<a href=#539 id=539 data-nosnippet>539</a> port: <span class="number">1</span>,
<a href=#540 id=540 data-nosnippet>540</a> },
<a href=#541 id=541 data-nosnippet>541</a> <span class="bool-val">true</span>,
<a href=#542 id=542 data-nosnippet>542</a> )
<a href=#543 id=543 data-nosnippet>543</a> .unwrap();
<a href=#544 id=544 data-nosnippet>544</a>
<a href=#545 id=545 data-nosnippet>545</a> state
<a href=#546 id=546 data-nosnippet>546</a> .handle_reach_out(
<a href=#547 id=547 data-nosnippet>547</a> ReachOut {
<a href=#548 id=548 data-nosnippet>548</a> round: <span class="number">1u32</span>.into(),
<a href=#549 id=549 data-nosnippet>549</a> ip: <span class="string">"1.1.1.1"</span>.parse().unwrap(), <span class="comment">//std::net::Ipv4Addr::LOCALHOST.into(),
<a href=#550 id=550 data-nosnippet>550</a> </span>port: <span class="number">2</span>,
<a href=#551 id=551 data-nosnippet>551</a> },
<a href=#552 id=552 data-nosnippet>552</a> <span class="bool-val">true</span>,
<a href=#553 id=553 data-nosnippet>553</a> )
<a href=#554 id=554 data-nosnippet>554</a> .unwrap();
<a href=#555 id=555 data-nosnippet>555</a>
<a href=#556 id=556 data-nosnippet>556</a> <span class="macro">dbg!</span>(<span class="kw-2">&amp;</span>state);
<a href=#557 id=557 data-nosnippet>557</a> <span class="macro">assert_eq!</span>(state.pending_probes.len(), <span class="number">2</span>);
<a href=#558 id=558 data-nosnippet>558</a> <span class="macro">assert_eq!</span>(state.active_probes.len(), <span class="number">0</span>);
<a href=#559 id=559 data-nosnippet>559</a>
<a href=#560 id=560 data-nosnippet>560</a> <span class="kw">let </span>probe = state.next_probe().unwrap();
<a href=#561 id=561 data-nosnippet>561</a> probe.finish(<span class="number">1</span>);
<a href=#562 id=562 data-nosnippet>562</a> <span class="kw">let </span>probe = state.next_probe().unwrap();
<a href=#563 id=563 data-nosnippet>563</a> probe.finish(<span class="number">2</span>);
<a href=#564 id=564 data-nosnippet>564</a>
<a href=#565 id=565 data-nosnippet>565</a> <span class="macro">assert!</span>(state.next_probe().is_none());
<a href=#566 id=566 data-nosnippet>566</a> <span class="macro">assert_eq!</span>(state.pending_probes.len(), <span class="number">0</span>);
<a href=#567 id=567 data-nosnippet>567</a> <span class="macro">assert_eq!</span>(state.active_probes.len(), <span class="number">2</span>);
<a href=#568 id=568 data-nosnippet>568</a> }
<a href=#569 id=569 data-nosnippet>569</a>
<a href=#570 id=570 data-nosnippet>570</a> <span class="attr">#[test]
<a href=#571 id=571 data-nosnippet>571</a> </span><span class="kw">fn </span>test_map_to_local_socket() {
<a href=#572 id=572 data-nosnippet>572</a> <span class="macro">assert_eq!</span>(
<a href=#573 id=573 data-nosnippet>573</a> map_to_local_socket_family(<span class="string">"1.1.1.1"</span>.parse().unwrap(), <span class="bool-val">false</span>),
<a href=#574 id=574 data-nosnippet>574</a> <span class="prelude-val">Some</span>(<span class="string">"1.1.1.1"</span>.parse().unwrap())
<a href=#575 id=575 data-nosnippet>575</a> );
<a href=#576 id=576 data-nosnippet>576</a> <span class="macro">assert_eq!</span>(
<a href=#577 id=577 data-nosnippet>577</a> map_to_local_socket_family(<span class="string">"1.1.1.1"</span>.parse().unwrap(), <span class="bool-val">true</span>),
<a href=#578 id=578 data-nosnippet>578</a> <span class="prelude-val">Some</span>(<span class="string">"::ffff:1.1.1.1"</span>.parse().unwrap())
<a href=#579 id=579 data-nosnippet>579</a> );
<a href=#534 id=534 data-nosnippet>534</a><span class="attr">#[cfg(test)]
<a href=#535 id=535 data-nosnippet>535</a></span><span class="kw">mod </span>tests {
<a href=#536 id=536 data-nosnippet>536</a> <span class="kw">use super</span>::<span class="kw-2">*</span>;
<a href=#537 id=537 data-nosnippet>537</a>
<a href=#538 id=538 data-nosnippet>538</a> <span class="attr">#[test]
<a href=#539 id=539 data-nosnippet>539</a> </span><span class="kw">fn </span>test_basic_server_state() {
<a href=#540 id=540 data-nosnippet>540</a> <span class="kw">let </span><span class="kw-2">mut </span>state = ServerState::new(<span class="number">2</span>, <span class="number">2</span>);
<a href=#541 id=541 data-nosnippet>541</a>
<a href=#542 id=542 data-nosnippet>542</a> state
<a href=#543 id=543 data-nosnippet>543</a> .handle_reach_out(
<a href=#544 id=544 data-nosnippet>544</a> ReachOut {
<a href=#545 id=545 data-nosnippet>545</a> round: <span class="number">1u32</span>.into(),
<a href=#546 id=546 data-nosnippet>546</a> ip: std::net::Ipv4Addr::LOCALHOST.into(),
<a href=#547 id=547 data-nosnippet>547</a> port: <span class="number">1</span>,
<a href=#548 id=548 data-nosnippet>548</a> },
<a href=#549 id=549 data-nosnippet>549</a> <span class="bool-val">true</span>,
<a href=#550 id=550 data-nosnippet>550</a> )
<a href=#551 id=551 data-nosnippet>551</a> .unwrap();
<a href=#552 id=552 data-nosnippet>552</a>
<a href=#553 id=553 data-nosnippet>553</a> state
<a href=#554 id=554 data-nosnippet>554</a> .handle_reach_out(
<a href=#555 id=555 data-nosnippet>555</a> ReachOut {
<a href=#556 id=556 data-nosnippet>556</a> round: <span class="number">1u32</span>.into(),
<a href=#557 id=557 data-nosnippet>557</a> ip: <span class="string">"1.1.1.1"</span>.parse().unwrap(), <span class="comment">//std::net::Ipv4Addr::LOCALHOST.into(),
<a href=#558 id=558 data-nosnippet>558</a> </span>port: <span class="number">2</span>,
<a href=#559 id=559 data-nosnippet>559</a> },
<a href=#560 id=560 data-nosnippet>560</a> <span class="bool-val">true</span>,
<a href=#561 id=561 data-nosnippet>561</a> )
<a href=#562 id=562 data-nosnippet>562</a> .unwrap();
<a href=#563 id=563 data-nosnippet>563</a>
<a href=#564 id=564 data-nosnippet>564</a> <span class="macro">dbg!</span>(<span class="kw-2">&amp;</span>state);
<a href=#565 id=565 data-nosnippet>565</a> <span class="macro">assert_eq!</span>(state.pending_probes.len(), <span class="number">2</span>);
<a href=#566 id=566 data-nosnippet>566</a> <span class="macro">assert_eq!</span>(state.active_probes.len(), <span class="number">0</span>);
<a href=#567 id=567 data-nosnippet>567</a>
<a href=#568 id=568 data-nosnippet>568</a> <span class="kw">let </span>probe = state.next_probe().unwrap();
<a href=#569 id=569 data-nosnippet>569</a> probe.finish(<span class="number">1</span>);
<a href=#570 id=570 data-nosnippet>570</a> <span class="kw">let </span>probe = state.next_probe().unwrap();
<a href=#571 id=571 data-nosnippet>571</a> probe.finish(<span class="number">2</span>);
<a href=#572 id=572 data-nosnippet>572</a>
<a href=#573 id=573 data-nosnippet>573</a> <span class="macro">assert!</span>(state.next_probe().is_none());
<a href=#574 id=574 data-nosnippet>574</a> <span class="macro">assert_eq!</span>(state.pending_probes.len(), <span class="number">0</span>);
<a href=#575 id=575 data-nosnippet>575</a> <span class="macro">assert_eq!</span>(state.active_probes.len(), <span class="number">2</span>);
<a href=#576 id=576 data-nosnippet>576</a> }
<a href=#577 id=577 data-nosnippet>577</a>
<a href=#578 id=578 data-nosnippet>578</a> <span class="attr">#[test]
<a href=#579 id=579 data-nosnippet>579</a> </span><span class="kw">fn </span>test_map_to_local_socket() {
<a href=#580 id=580 data-nosnippet>580</a> <span class="macro">assert_eq!</span>(
<a href=#581 id=581 data-nosnippet>581</a> map_to_local_socket_family(<span class="string">"::1"</span>.parse().unwrap(), <span class="bool-val">true</span>),
<a href=#582 id=582 data-nosnippet>582</a> <span class="prelude-val">Some</span>(<span class="string">"::1"</span>.parse().unwrap())
<a href=#581 id=581 data-nosnippet>581</a> map_to_local_socket_family(<span class="string">"1.1.1.1"</span>.parse().unwrap(), <span class="bool-val">false</span>),
<a href=#582 id=582 data-nosnippet>582</a> <span class="prelude-val">Some</span>(<span class="string">"1.1.1.1"</span>.parse().unwrap())
<a href=#583 id=583 data-nosnippet>583</a> );
<a href=#584 id=584 data-nosnippet>584</a> <span class="macro">assert_eq!</span>(
<a href=#585 id=585 data-nosnippet>585</a> map_to_local_socket_family(<span class="string">"::1"</span>.parse().unwrap(), <span class="bool-val">false</span>),
<a href=#586 id=586 data-nosnippet>586</a> <span class="prelude-val">None
<a href=#587 id=587 data-nosnippet>587</a> </span>);
<a href=#588 id=588 data-nosnippet>588</a> }
<a href=#589 id=589 data-nosnippet>589</a>}</code></pre></div></section></main></body></html>
<a href=#585 id=585 data-nosnippet>585</a> map_to_local_socket_family(<span class="string">"1.1.1.1"</span>.parse().unwrap(), <span class="bool-val">true</span>),
<a href=#586 id=586 data-nosnippet>586</a> <span class="prelude-val">Some</span>(<span class="string">"::ffff:1.1.1.1"</span>.parse().unwrap())
<a href=#587 id=587 data-nosnippet>587</a> );
<a href=#588 id=588 data-nosnippet>588</a> <span class="macro">assert_eq!</span>(
<a href=#589 id=589 data-nosnippet>589</a> map_to_local_socket_family(<span class="string">"::1"</span>.parse().unwrap(), <span class="bool-val">true</span>),
<a href=#590 id=590 data-nosnippet>590</a> <span class="prelude-val">Some</span>(<span class="string">"::1"</span>.parse().unwrap())
<a href=#591 id=591 data-nosnippet>591</a> );
<a href=#592 id=592 data-nosnippet>592</a> <span class="macro">assert_eq!</span>(
<a href=#593 id=593 data-nosnippet>593</a> map_to_local_socket_family(<span class="string">"::1"</span>.parse().unwrap(), <span class="bool-val">false</span>),
<a href=#594 id=594 data-nosnippet>594</a> <span class="prelude-val">None
<a href=#595 id=595 data-nosnippet>595</a> </span>);
<a href=#596 id=596 data-nosnippet>596</a> <span class="macro">assert_eq!</span>(
<a href=#597 id=597 data-nosnippet>597</a> map_to_local_socket_family(<span class="string">"::ffff:1.1.1.1"</span>.parse().unwrap(), <span class="bool-val">false</span>),
<a href=#598 id=598 data-nosnippet>598</a> <span class="prelude-val">Some</span>(<span class="string">"1.1.1.1"</span>.parse().unwrap())
<a href=#599 id=599 data-nosnippet>599</a> )
<a href=#600 id=600 data-nosnippet>600</a> }
<a href=#601 id=601 data-nosnippet>601</a>}</code></pre></div></section></main></body></html>