Pilot v2: Core implementation + battery telemetry

Major updates:
- Complete Rust rewrite (pilot-v2/) with working MQTT client
- Fixed MQTT event loop deadlock (background task pattern)
- Battery telemetry for Linux (auto-detected via /sys/class/power_supply)
- Home Assistant auto-discovery for all sensors and switches
- Comprehensive documentation (AVANCEMENT.md, CLAUDE.md, roadmap)
- Docker test environment with Mosquitto broker
- Helper scripts for development and testing

Features working:
 MQTT connectivity with LWT
 YAML configuration with validation
 Telemetry: CPU, memory, IP, battery (Linux)
 Commands: shutdown, reboot, sleep, screen (dry-run tested)
 HA discovery and integration
 Allowlist and cooldown protection

Ready for testing on real hardware.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Gilles Soulier
2025-12-30 06:23:00 +01:00
parent b7e67c6501
commit c5381b7112
4453 changed files with 78647 additions and 0 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +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="Checks if a topic or topic filter has wildcards"><title>has_wildcards in rumqttc::v5::mqttbytes - 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="rumqttc" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0 (ded5c06cf 2025-12-08)" data-channel="1.92.0" data-search-js="search-d69d8955.js" data-stringdex-js="stringdex-c3e638e9.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 fn"><!--[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="#">has_wildcards</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../rumqttc/index.html">rumqttc</a><span class="version">0.24.0</span></h2></div><div class="sidebar-elems"><div id="rustdoc-modnav"><h2><a href="index.html">In rumqttc::<wbr>v5::<wbr>mqttbytes</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">rumqttc</a>::<wbr><a href="../index.html">v5</a>::<wbr><a href="index.html">mqttbytes</a></div><h1>Function <span class="fn">has_<wbr>wildcards</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/rumqttc/v5/mqttbytes/mod.rs.html#36-38">Source</a> </span></div><pre class="rust item-decl"><code>pub fn has_wildcards(s: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.bool.html">bool</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Checks if a topic or topic filter has wildcards</p>
</div></details></section></div></main></body></html>

View File

@@ -0,0 +1,5 @@
<!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="Checks if topic matches a filter. topic and filter validation isnt done here."><title>matches in rumqttc::v5::mqttbytes - 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="rumqttc" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0 (ded5c06cf 2025-12-08)" data-channel="1.92.0" data-search-js="search-d69d8955.js" data-stringdex-js="stringdex-c3e638e9.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 fn"><!--[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="#">matches</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../rumqttc/index.html">rumqttc</a><span class="version">0.24.0</span></h2></div><div class="sidebar-elems"><div id="rustdoc-modnav"><h2><a href="index.html">In rumqttc::<wbr>v5::<wbr>mqttbytes</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">rumqttc</a>::<wbr><a href="../index.html">v5</a>::<wbr><a href="index.html">mqttbytes</a></div><h1>Function <span class="fn">matches</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/rumqttc/v5/mqttbytes/mod.rs.html#97-130">Source</a> </span></div><pre class="rust item-decl"><code>pub fn matches(topic: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.str.html">str</a>, filter: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.bool.html">bool</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Checks if topic matches a filter. topic and filter validation isnt done here.</p>
<p><strong>NOTE</strong>: topic is a misnomer in the arg. this can also be used to match 2 wild subscriptions
<strong>NOTE</strong>: make sure a topic is validated during a publish and filter is validated
during a subscribe</p>
</div></details></section></div></main></body></html>

View File

@@ -0,0 +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="Maps a number to QoS"><title>qos in rumqttc::v5::mqttbytes - 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="rumqttc" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0 (ded5c06cf 2025-12-08)" data-channel="1.92.0" data-search-js="search-d69d8955.js" data-stringdex-js="stringdex-c3e638e9.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 fn"><!--[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="#">qos</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../rumqttc/index.html">rumqttc</a><span class="version">0.24.0</span></h2></div><div class="sidebar-elems"><div id="rustdoc-modnav"><h2><a href="index.html">In rumqttc::<wbr>v5::<wbr>mqttbytes</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">rumqttc</a>::<wbr><a href="../index.html">v5</a>::<wbr><a href="index.html">mqttbytes</a></div><h1>Function <span class="fn">qos</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/rumqttc/v5/mqttbytes/mod.rs.html#26-33">Source</a> </span></div><pre class="rust item-decl"><code>pub fn qos(num: <a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.u8.html">u8</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.92.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="enum.QoS.html" title="enum rumqttc::v5::mqttbytes::QoS">QoS</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Maps a number to QoS</p>
</div></details></section></div></main></body></html>

View File

@@ -0,0 +1,3 @@
<!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="Checks if the filter is valid"><title>valid_filter in rumqttc::v5::mqttbytes - 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="rumqttc" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0 (ded5c06cf 2025-12-08)" data-channel="1.92.0" data-search-js="search-d69d8955.js" data-stringdex-js="stringdex-c3e638e9.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 fn"><!--[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="#">valid_filter</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../rumqttc/index.html">rumqttc</a><span class="version">0.24.0</span></h2></div><div class="sidebar-elems"><div id="rustdoc-modnav"><h2><a href="index.html">In rumqttc::<wbr>v5::<wbr>mqttbytes</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">rumqttc</a>::<wbr><a href="../index.html">v5</a>::<wbr><a href="index.html">mqttbytes</a></div><h1>Function <span class="fn">valid_<wbr>filter</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/rumqttc/v5/mqttbytes/mod.rs.html#53-90">Source</a> </span></div><pre class="rust item-decl"><code>pub fn valid_filter(filter: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.bool.html">bool</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Checks if the filter is valid</p>
<p><a href="https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718106">https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718106</a></p>
</div></details></section></div></main></body></html>

View File

@@ -0,0 +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="Checks if a topic is valid"><title>valid_topic in rumqttc::v5::mqttbytes - 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="rumqttc" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0 (ded5c06cf 2025-12-08)" data-channel="1.92.0" data-search-js="search-d69d8955.js" data-stringdex-js="stringdex-c3e638e9.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 fn"><!--[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="#">valid_topic</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../rumqttc/index.html">rumqttc</a><span class="version">0.24.0</span></h2></div><div class="sidebar-elems"><div id="rustdoc-modnav"><h2><a href="index.html">In rumqttc::<wbr>v5::<wbr>mqttbytes</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">rumqttc</a>::<wbr><a href="../index.html">v5</a>::<wbr><a href="index.html">mqttbytes</a></div><h1>Function <span class="fn">valid_<wbr>topic</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/rumqttc/v5/mqttbytes/mod.rs.html#41-48">Source</a> </span></div><pre class="rust item-decl"><code>pub fn valid_topic(topic: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.str.html">str</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.bool.html">bool</a></code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Checks if a topic is valid</p>
</div></details></section></div></main></body></html>

View File

@@ -0,0 +1,4 @@
<!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="API documentation for the Rust `mqttbytes` mod in crate `rumqttc`."><title>rumqttc::v5::mqttbytes - 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="rumqttc" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0 (ded5c06cf 2025-12-08)" data-channel="1.92.0" data-search-js="search-d69d8955.js" data-stringdex-js="stringdex-c3e638e9.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 mqttbytes</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../rumqttc/index.html">rumqttc</a><span class="version">0.24.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module mqttbytes</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#enums" title="Enums">Enums</a></li><li><a href="#functions" title="Functions">Functions</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In rumqttc::<wbr>v5</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">rumqttc</a>::<wbr><a href="../index.html">v5</a></div><h1>Module <span>mqttbytes</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/rumqttc/v5/mqttbytes/mod.rs.html#1-186">Source</a> </span></div><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><dl class="item-table"><dt><a class="mod" href="v5/index.html" title="mod rumqttc::v5::mqttbytes::v5">v5</a></dt><dd>This module is the place where all the protocol specifics gets abstracted
out and creates a structures which are common across protocols. Since,
MQTT is the core protocol that this broker supports, a lot of structs closely
map to what MQTT specifies in its protocol</dd></dl><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.Error.html" title="enum rumqttc::v5::mqttbytes::Error">Error</a></dt><dd>Error during serialization and deserialization</dd><dt><a class="enum" href="enum.QoS.html" title="enum rumqttc::v5::mqttbytes::QoS">QoS</a></dt><dd>Quality of service</dd></dl><h2 id="functions" class="section-header">Functions<a href="#functions" class="anchor">§</a></h2><dl class="item-table"><dt><a class="fn" href="fn.has_wildcards.html" title="fn rumqttc::v5::mqttbytes::has_wildcards">has_<wbr>wildcards</a></dt><dd>Checks if a topic or topic filter has wildcards</dd><dt><a class="fn" href="fn.matches.html" title="fn rumqttc::v5::mqttbytes::matches">matches</a></dt><dd>Checks if topic matches a filter. topic and filter validation isnt done here.</dd><dt><a class="fn" href="fn.qos.html" title="fn rumqttc::v5::mqttbytes::qos">qos</a></dt><dd>Maps a number to QoS</dd><dt><a class="fn" href="fn.valid_filter.html" title="fn rumqttc::v5::mqttbytes::valid_filter">valid_<wbr>filter</a></dt><dd>Checks if the filter is valid</dd><dt><a class="fn" href="fn.valid_topic.html" title="fn rumqttc::v5::mqttbytes::valid_topic">valid_<wbr>topic</a></dt><dd>Checks if a topic is valid</dd></dl></section></div></main></body></html>

View File

@@ -0,0 +1 @@
window.SIDEBAR_ITEMS = {"enum":["Error","QoS"],"fn":["has_wildcards","matches","qos","valid_filter","valid_topic"],"mod":["v5"]};

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.ConnectReturnCode.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.ConnectReturnCode.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.ConnectReturnCode.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.ConnectReturnCode.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnAck.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnAck.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnAck.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnAck.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnAckProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnAckProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnAckProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnAckProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.Connect.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.Connect.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.Connect.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.Connect.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnectProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnectProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnectProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.ConnectProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.LastWill.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.LastWill.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.LastWill.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.LastWill.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.LastWillProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.LastWillProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.LastWillProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.LastWillProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.Login.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.Login.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.Login.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.Login.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.DisconnectReasonCode.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.DisconnectReasonCode.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.DisconnectReasonCode.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.DisconnectReasonCode.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.Disconnect.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.Disconnect.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.Disconnect.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.Disconnect.html" + location.search + location.hash);</script>
</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

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

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
<!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="Checks if the stream has enough bytes to frame a packet and returns fixed header only if a packet can be framed with existing bytes in the `stream`. The passed stream doesnt modify parent streams cursor. If this function returned an error, next `check` on the same parent stream is forced start with cursor at 0 again (Iter is owned. Only Iters cursor is changed internally)"><title>check in rumqttc::v5::mqttbytes::v5 - 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="rumqttc" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0 (ded5c06cf 2025-12-08)" data-channel="1.92.0" data-search-js="search-d69d8955.js" data-stringdex-js="stringdex-c3e638e9.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 fn"><!--[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="#">check</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../../rumqttc/index.html">rumqttc</a><span class="version">0.24.0</span></h2></div><div class="sidebar-elems"><div id="rustdoc-modnav"><h2><a href="index.html">In rumqttc::<wbr>v5::<wbr>mqttbytes::<wbr>v5</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">rumqttc</a>::<wbr><a href="../../index.html">v5</a>::<wbr><a href="../index.html">mqttbytes</a>::<wbr><a href="index.html">v5</a></div><h1>Function <span class="fn">check</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/rumqttc/v5/mqttbytes/v5/mod.rs.html#304-329">Source</a> </span></div><pre class="rust item-decl"><code>pub fn check(
stream: <a class="struct" href="https://doc.rust-lang.org/1.92.0/core/slice/iter/struct.Iter.html" title="struct core::slice::iter::Iter">Iter</a>&lt;'_, <a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.u8.html">u8</a>&gt;,
max_packet_size: <a class="enum" href="https://doc.rust-lang.org/1.92.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.92.0/std/primitive.usize.html">usize</a>&gt;,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.92.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.FixedHeader.html" title="struct rumqttc::v5::mqttbytes::v5::FixedHeader">FixedHeader</a>, <a class="enum" href="../enum.Error.html" title="enum rumqttc::v5::mqttbytes::Error">Error</a>&gt;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Checks if the stream has enough bytes to frame a packet and returns fixed header
only if a packet can be framed with existing bytes in the <code>stream</code>.
The passed stream doesnt modify parent streams cursor. If this function
returned an error, next <code>check</code> on the same parent stream is forced start
with cursor at 0 again (Iter is owned. Only Iters cursor is changed internally)</p>
</div></details></section></div></main></body></html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PingReq.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PingReq.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PingReq.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PingReq.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PingResp.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PingResp.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PingResp.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PingResp.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.PubAckReason.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.PubAckReason.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.PubAckReason.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.PubAckReason.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PubAck.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PubAck.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PubAck.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PubAck.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PubAckProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PubAckProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PubAckProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PubAckProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.PubCompReason.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.PubCompReason.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.PubCompReason.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.PubCompReason.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PubComp.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PubComp.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PubComp.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PubComp.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PubCompProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PubCompProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PubCompProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PubCompProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.Publish.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.Publish.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.Publish.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.Publish.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PublishProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PublishProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PublishProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PublishProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.PubRecReason.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.PubRecReason.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.PubRecReason.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.PubRecReason.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRec.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRec.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRec.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRec.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRecProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRecProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRecProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRecProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.PubRelReason.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.PubRelReason.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.PubRelReason.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.PubRelReason.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRel.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRel.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRel.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRel.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRelProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRelProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRelProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.PubRelProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1 @@
window.SIDEBAR_ITEMS = {"enum":["ConnectReturnCode","DisconnectReasonCode","Packet","PacketType","PubAckReason","PubCompReason","PubRecReason","PubRelReason","RetainForwardRule","SubscribeReasonCode","UnsubAckReason"],"fn":["check"],"struct":["ConnAck","ConnAckProperties","Connect","ConnectProperties","Disconnect","Filter","FixedHeader","LastWill","LastWillProperties","Login","PingReq","PingResp","PubAck","PubAckProperties","PubComp","PubCompProperties","PubRec","PubRecProperties","PubRel","PubRelProperties","Publish","PublishProperties","SubAck","SubAckProperties","Subscribe","SubscribeProperties","UnsubAck","UnsubAckProperties","Unsubscribe","UnsubscribeProperties"]};

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

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

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

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

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

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

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.SubscribeReasonCode.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.SubscribeReasonCode.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.SubscribeReasonCode.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.SubscribeReasonCode.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.SubAck.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.SubAck.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.SubAck.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.SubAck.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.SubAckProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.SubAckProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.SubAckProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.SubAckProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.RetainForwardRule.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.RetainForwardRule.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.RetainForwardRule.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.RetainForwardRule.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.Filter.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.Filter.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.Filter.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.Filter.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.Subscribe.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.Subscribe.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.Subscribe.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.Subscribe.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.SubscribeProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.SubscribeProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.SubscribeProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.SubscribeProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/enum.UnsubAckReason.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/enum.UnsubAckReason.html">../../../../../rumqttc/v5/mqttbytes/v5/enum.UnsubAckReason.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/enum.UnsubAckReason.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubAck.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubAck.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubAck.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubAck.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubAckProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubAckProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubAckProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubAckProperties.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.Unsubscribe.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.Unsubscribe.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.Unsubscribe.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.Unsubscribe.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubscribeProperties.html">
<title>Redirection</title>
</head>
<body>
<p>Redirecting to <a href="../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubscribeProperties.html">../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubscribeProperties.html</a>...</p>
<script>location.replace("../../../../../rumqttc/v5/mqttbytes/v5/struct.UnsubscribeProperties.html" + location.search + location.hash);</script>
</body>
</html>