From bf0bc29578369af8e88ac272aad74ea135d370e4 Mon Sep 17 00:00:00 2001 From: Ondrej Babec Date: Thu, 28 Apr 2022 14:27:09 +0200 Subject: [PATCH] Remove drogue example --- Cargo.toml | 39 ++- examples/drogue/Cargo.toml | 11 - examples/drogue/src/drogue_network.rs | 103 -------- examples/drogue/src/lib.rs | 33 --- mqtt/Cargo.toml | 28 --- mqtt/src/fmt.rs | 228 ------------------ {mqtt/src => src}/client/client.rs | 0 {mqtt/src => src}/client/client_config.rs | 0 {mqtt/src => src}/client/mod.rs | 0 {mqtt/src => src}/encoding/mod.rs | 0 .../encoding/variable_byte_integer.rs | 0 {examples/drogue/src => src}/fmt.rs | 0 {mqtt/src => src}/lib.rs | 0 {mqtt/src => src}/network/mod.rs | 0 {mqtt/src => src}/packet/mod.rs | 0 {mqtt/src => src}/packet/v5/auth_packet.rs | 0 {mqtt/src => src}/packet/v5/connack_packet.rs | 0 {mqtt/src => src}/packet/v5/connect_packet.rs | 0 .../packet/v5/disconnect_packet.rs | 0 {mqtt/src => src}/packet/v5/mod.rs | 0 {mqtt/src => src}/packet/v5/mqtt_packet.rs | 0 {mqtt/src => src}/packet/v5/packet_type.rs | 0 {mqtt/src => src}/packet/v5/pingreq_packet.rs | 0 .../src => src}/packet/v5/pingresp_packet.rs | 0 {mqtt/src => src}/packet/v5/property.rs | 0 {mqtt/src => src}/packet/v5/puback_packet.rs | 0 {mqtt/src => src}/packet/v5/pubcomp_packet.rs | 0 {mqtt/src => src}/packet/v5/publish_packet.rs | 0 {mqtt/src => src}/packet/v5/pubrec_packet.rs | 0 {mqtt/src => src}/packet/v5/pubrel_packet.rs | 0 {mqtt/src => src}/packet/v5/reason_codes.rs | 0 {mqtt/src => src}/packet/v5/suback_packet.rs | 0 .../packet/v5/subscription_packet.rs | 0 .../src => src}/packet/v5/unsuback_packet.rs | 0 .../packet/v5/unsubscription_packet.rs | 0 {mqtt/src => src}/tests/mod.rs | 0 {mqtt/src => src}/tests/unit/encoding/mod.rs | 0 .../encoding/variable_byte_integer_unit.rs | 0 {mqtt/src => src}/tests/unit/mod.rs | 0 {mqtt/src => src}/tests/unit/packet/mod.rs | 0 .../unit/packet/v5/connack_packet_unit.rs | 0 .../unit/packet/v5/connect_packet_unit.rs | 0 .../unit/packet/v5/disconnect_packet_unit.rs | 0 {mqtt/src => src}/tests/unit/packet/v5/mod.rs | 0 .../unit/packet/v5/pingreq_packet_unit.rs | 0 .../unit/packet/v5/pingresp_packet_unit.rs | 0 .../unit/packet/v5/puback_packet_unit.rs | 0 .../unit/packet/v5/pubcomp_packet_unit.rs | 0 .../unit/packet/v5/publish_packet_unit.rs | 0 .../unit/packet/v5/pubrec_packet_unit.rs | 0 .../unit/packet/v5/pubrel_packet_unit.rs | 0 .../unit/packet/v5/suback_packet_unit.rs | 0 .../packet/v5/subscription_packet_unit.rs | 0 .../unit/packet/v5/unsuback_packet_unit.rs | 0 .../packet/v5/unsubscription_packet_unit.rs | 0 .../tests/unit/utils/buffer_reader_unit.rs | 0 .../tests/unit/utils/buffer_writer_unit.rs | 0 {mqtt/src => src}/tests/unit/utils/mod.rs | 0 {mqtt/src => src}/tokio_net/mod.rs | 0 {mqtt/src => src}/tokio_net/tokio_network.rs | 0 {mqtt/src => src}/utils/buffer_reader.rs | 0 {mqtt/src => src}/utils/buffer_writer.rs | 0 {mqtt/src => src}/utils/mod.rs | 0 {mqtt/src => src}/utils/rng_generator.rs | 0 {mqtt/src => src}/utils/types.rs | 0 .../integration_test_single.rs | 0 {mqtt/tests => tests}/load_test.rs | 0 67 files changed, 29 insertions(+), 413 deletions(-) delete mode 100644 examples/drogue/Cargo.toml delete mode 100644 examples/drogue/src/drogue_network.rs delete mode 100644 examples/drogue/src/lib.rs delete mode 100644 mqtt/Cargo.toml delete mode 100644 mqtt/src/fmt.rs rename {mqtt/src => src}/client/client.rs (100%) rename {mqtt/src => src}/client/client_config.rs (100%) rename {mqtt/src => src}/client/mod.rs (100%) rename {mqtt/src => src}/encoding/mod.rs (100%) rename {mqtt/src => src}/encoding/variable_byte_integer.rs (100%) rename {examples/drogue/src => src}/fmt.rs (100%) rename {mqtt/src => src}/lib.rs (100%) rename {mqtt/src => src}/network/mod.rs (100%) rename {mqtt/src => src}/packet/mod.rs (100%) rename {mqtt/src => src}/packet/v5/auth_packet.rs (100%) rename {mqtt/src => src}/packet/v5/connack_packet.rs (100%) rename {mqtt/src => src}/packet/v5/connect_packet.rs (100%) rename {mqtt/src => src}/packet/v5/disconnect_packet.rs (100%) rename {mqtt/src => src}/packet/v5/mod.rs (100%) rename {mqtt/src => src}/packet/v5/mqtt_packet.rs (100%) rename {mqtt/src => src}/packet/v5/packet_type.rs (100%) rename {mqtt/src => src}/packet/v5/pingreq_packet.rs (100%) rename {mqtt/src => src}/packet/v5/pingresp_packet.rs (100%) rename {mqtt/src => src}/packet/v5/property.rs (100%) rename {mqtt/src => src}/packet/v5/puback_packet.rs (100%) rename {mqtt/src => src}/packet/v5/pubcomp_packet.rs (100%) rename {mqtt/src => src}/packet/v5/publish_packet.rs (100%) rename {mqtt/src => src}/packet/v5/pubrec_packet.rs (100%) rename {mqtt/src => src}/packet/v5/pubrel_packet.rs (100%) rename {mqtt/src => src}/packet/v5/reason_codes.rs (100%) rename {mqtt/src => src}/packet/v5/suback_packet.rs (100%) rename {mqtt/src => src}/packet/v5/subscription_packet.rs (100%) rename {mqtt/src => src}/packet/v5/unsuback_packet.rs (100%) rename {mqtt/src => src}/packet/v5/unsubscription_packet.rs (100%) rename {mqtt/src => src}/tests/mod.rs (100%) rename {mqtt/src => src}/tests/unit/encoding/mod.rs (100%) rename {mqtt/src => src}/tests/unit/encoding/variable_byte_integer_unit.rs (100%) rename {mqtt/src => src}/tests/unit/mod.rs (100%) rename {mqtt/src => src}/tests/unit/packet/mod.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/connack_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/connect_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/disconnect_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/mod.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/pingreq_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/pingresp_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/puback_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/pubcomp_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/publish_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/pubrec_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/pubrel_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/suback_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/subscription_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/unsuback_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/packet/v5/unsubscription_packet_unit.rs (100%) rename {mqtt/src => src}/tests/unit/utils/buffer_reader_unit.rs (100%) rename {mqtt/src => src}/tests/unit/utils/buffer_writer_unit.rs (100%) rename {mqtt/src => src}/tests/unit/utils/mod.rs (100%) rename {mqtt/src => src}/tokio_net/mod.rs (100%) rename {mqtt/src => src}/tokio_net/tokio_network.rs (100%) rename {mqtt/src => src}/utils/buffer_reader.rs (100%) rename {mqtt/src => src}/utils/buffer_writer.rs (100%) rename {mqtt/src => src}/utils/mod.rs (100%) rename {mqtt/src => src}/utils/rng_generator.rs (100%) rename {mqtt/src => src}/utils/types.rs (100%) rename {mqtt/tests => tests}/integration_test_single.rs (100%) rename {mqtt/tests => tests}/load_test.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index a9711cc..2b93725 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,31 @@ -[workspace] -members = [ - "mqtt" -] +[package] +name = "rust-mqtt" +version = "0.0.1" +authors = ["Ondrej Babec "] +edition = "2021" resolver = "2" +description = "MQTT client for both embedded and non-embedded devices" +readme = "README.md" +license-file = "LICENSE" -[patch.crates-io] -embassy = { git = "https://github.com/embassy-rs/embassy.git", rev = "3d6b8bd9832d5a29cab4aa21434663e6ea6f4488" } -embassy-traits = { git = "https://github.com/embassy-rs/embassy.git", rev = "3d6b8bd9832d5a29cab4aa21434663e6ea6f4488" } -embassy-net = { git = "https://github.com/embassy-rs/embassy.git", rev = "3d6b8bd9832d5a29cab4aa21434663e6ea6f4488" } -drogue-device = { git = "https://github.com/drogue-iot/drogue-device.git", rev = "62ff20e278a6a705056173171714b1bbdc078df5" } -embassy-nrf = { git = "https://github.com/embassy-rs/embassy.git", rev = "3d6b8bd9832d5a29cab4aa21434663e6ea6f4488" } +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +heapless = "0.7.10" +rand_core = "0.6.0" +defmt = { version = "0.3", optional = true } +log = { version = "0.4.14", optional = true } +tokio = { version = "1", features = ["full"], optional = true, default-features = false } + +[dev-dependencies] +tokio = { version = "1", features = ["full"] } +tokio-test = { version = "0.4.2"} +env_logger = "0.9.0" +futures = { version = "0.3.21" } +log = { version = "0.4.14"} +serial_test = "0.6.0" + +[features] +default = ["std"] +std = ["tokio", "log"] +no_std = ["defmt"] \ No newline at end of file diff --git a/examples/drogue/Cargo.toml b/examples/drogue/Cargo.toml deleted file mode 100644 index b035a74..0000000 --- a/examples/drogue/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "drogue-network" -version = "0.0.1" -authors = ["Ondrej Babec "] -edition = "2021" -resolver = "2" - -[dependencies] -defmt = { version = "0.3" } -rust-mqtt = { path = "../../mqtt", features = ["no_std"], default-features = false } -drogue-device = { path = "/drogue-device/device", features = ["time"], default-features = false } \ No newline at end of file diff --git a/examples/drogue/src/drogue_network.rs b/examples/drogue/src/drogue_network.rs deleted file mode 100644 index 7b2db25..0000000 --- a/examples/drogue/src/drogue_network.rs +++ /dev/null @@ -1,103 +0,0 @@ -/* - * MIT License - * - * Copyright (c) [2022] [Ondrej Babec ] - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publishistribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIMAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -use crate::network::socket::Socket; -use crate::Address; -use core::future::Future; -use core::ops::Range; -use rust_mqtt::packet::v5::reason_codes::ReasonCode; - -use crate::traits::tcp; -use crate::traits::tcp::TcpStack; -use rust_mqtt::network::{NetworkConnection, NetworkConnectionFactory}; - -pub struct DrogueNetwork - where - A: TcpStack + Clone + 'static, -{ - socket: Socket, -} - -impl DrogueNetwork - where - A: TcpStack + Clone + 'static, -{ - pub fn new(socket: Socket) -> Self { - Self { socket } - } -} - -impl NetworkConnection for DrogueNetwork - where - A: TcpStack + Clone + 'static, -{ - type SendFuture<'m> - where - Self: 'm, - = impl Future> + 'm; - - type ReceiveFuture<'m> - where - Self: 'm, - = impl Future> + 'm; - - type CloseFuture<'m> - where - Self: 'm, - = impl Future> + 'm; - - fn send<'m>(&'m mut self, buffer: &'m [u8]) -> Self::SendFuture<'m> { - async move { - self.socket - .write(buffer) - .await - .map_err(|_| ReasonCode::NetworkError) - .map(|_| ()) - } - } - - fn receive<'m>(&'m mut self, buffer: &'m mut [u8]) -> Self::ReceiveFuture<'m> { - async move { - let r = self - .socket - .read(buffer) - .await - .map_err(|_| ReasonCode::NetworkError); - // Workaround for the fair access mutex, issue: - if let Ok(0) = r { - embassy::time::Timer::after(embassy::time::Duration::from_millis(10)).await; - } - r - } - } - - fn close<'m>(mut self) -> Self::CloseFuture<'m> { - async move { - self.socket - .close() - .await - .map_err(|_| ReasonCode::NetworkError) - } - } -} \ No newline at end of file diff --git a/examples/drogue/src/lib.rs b/examples/drogue/src/lib.rs deleted file mode 100644 index 6bd3829..0000000 --- a/examples/drogue/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -/* - * MIT License - * - * Copyright (c) [2022] [Ondrej Babec ] - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#![no_std] -#![feature(in_band_lifetimes)] -#![macro_use] -#![allow(dead_code)] -#![feature(type_alias_impl_trait)] -#![feature(generic_associated_types)] -pub mod fmt; -pub mod drogue_network; - diff --git a/mqtt/Cargo.toml b/mqtt/Cargo.toml deleted file mode 100644 index 2a86a45..0000000 --- a/mqtt/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -[package] -name = "rust-mqtt" -version = "0.0.1" -authors = ["Ondrej Babec "] -edition = "2021" -resolver = "2" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -heapless = "0.7.10" -rand_core = "0.6.0" -defmt = { version = "0.3", optional = true } -log = { version = "0.4.14", optional = true } -tokio = { version = "1", features = ["full"], optional = true, default-features = false } - -[dev-dependencies] -tokio = { version = "1", features = ["full"] } -tokio-test = { version = "0.4.2"} -env_logger = "0.9.0" -futures = { version = "0.3.21" } -log = { version = "0.4.14"} -serial_test = "0.6.0" - -[features] -default = ["std"] -std = ["tokio", "log"] -no_std = ["defmt"] \ No newline at end of file diff --git a/mqtt/src/fmt.rs b/mqtt/src/fmt.rs deleted file mode 100644 index f8bb0a0..0000000 --- a/mqtt/src/fmt.rs +++ /dev/null @@ -1,228 +0,0 @@ -#![macro_use] -#![allow(unused_macros)] - -#[cfg(all(feature = "defmt", feature = "log"))] -compile_error!("You may not enable both `defmt` and `log` features."); - -macro_rules! assert { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::assert!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::assert!($($x)*); - } - }; -} - -macro_rules! assert_eq { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::assert_eq!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::assert_eq!($($x)*); - } - }; -} - -macro_rules! assert_ne { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::assert_ne!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::assert_ne!($($x)*); - } - }; -} - -macro_rules! debug_assert { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::debug_assert!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::debug_assert!($($x)*); - } - }; -} - -macro_rules! debug_assert_eq { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::debug_assert_eq!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::debug_assert_eq!($($x)*); - } - }; -} - -macro_rules! debug_assert_ne { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::debug_assert_ne!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::debug_assert_ne!($($x)*); - } - }; -} - -macro_rules! todo { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::todo!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::todo!($($x)*); - } - }; -} - -macro_rules! unreachable { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::unreachable!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::unreachable!($($x)*); - } - }; -} - -macro_rules! panic { - ($($x:tt)*) => { - { - #[cfg(not(feature = "defmt"))] - ::core::panic!($($x)*); - #[cfg(feature = "defmt")] - ::defmt::panic!($($x)*); - } - }; -} - -macro_rules! trace { - ($s:literal $(, $x:expr)* $(,)?) => { - { - #[cfg(feature = "log")] - ::log::trace!($s $(, $x)*); - #[cfg(feature = "defmt")] - ::defmt::trace!($s $(, $x)*); - #[cfg(not(any(feature = "log", feature="defmt")))] - let _ = ($( & $x ),*); - } - }; -} - -macro_rules! debug { - ($s:literal $(, $x:expr)* $(,)?) => { - { - #[cfg(feature = "log")] - ::log::debug!($s $(, $x)*); - #[cfg(feature = "defmt")] - ::defmt::debug!($s $(, $x)*); - #[cfg(not(any(feature = "log", feature="defmt")))] - let _ = ($( & $x ),*); - } - }; -} - -macro_rules! info { - ($s:literal $(, $x:expr)* $(,)?) => { - { - #[cfg(feature = "log")] - ::log::info!($s $(, $x)*); - #[cfg(feature = "defmt")] - ::defmt::info!($s $(, $x)*); - #[cfg(not(any(feature = "log", feature="defmt")))] - let _ = ($( & $x ),*); - } - }; -} - -macro_rules! warn { - ($s:literal $(, $x:expr)* $(,)?) => { - { - #[cfg(feature = "log")] - ::log::warn!($s $(, $x)*); - #[cfg(feature = "defmt")] - ::defmt::warn!($s $(, $x)*); - #[cfg(not(any(feature = "log", feature="defmt")))] - let _ = ($( & $x ),*); - } - }; -} - -macro_rules! error { - ($s:literal $(, $x:expr)* $(,)?) => { - { - #[cfg(feature = "log")] - ::log::error!($s $(, $x)*); - #[cfg(feature = "defmt")] - ::defmt::error!($s $(, $x)*); - #[cfg(not(any(feature = "log", feature="defmt")))] - let _ = ($( & $x ),*); - } - }; -} - -#[cfg(feature = "defmt")] -macro_rules! unwrap { - ($($x:tt)*) => { - ::defmt::unwrap!($($x)*) - }; -} - -#[cfg(not(feature = "defmt"))] -macro_rules! unwrap { - ($arg:expr) => { - match $crate::fmt::Try::into_result($arg) { - ::core::result::Result::Ok(t) => t, - ::core::result::Result::Err(e) => { - ::core::panic!("unwrap of `{}` failed: {:?}", ::core::stringify!($arg), e); - } - } - }; - ($arg:expr, $($msg:expr),+ $(,)? ) => { - match $crate::fmt::Try::into_result($arg) { - ::core::result::Result::Ok(t) => t, - ::core::result::Result::Err(e) => { - ::core::panic!("unwrap of `{}` failed: {}: {:?}", ::core::stringify!($arg), ::core::format_args!($($msg,)*), e); - } - } - } -} - -#[cfg(feature = "defmt-timestamp-uptime")] -defmt::timestamp! {"{=u64:us}", crate::time::Instant::now().as_micros() } - -#[derive(Debug, Copy, Clone, Eq, PartialEq)] -pub struct NoneError; - -pub trait Try { - type Ok; - type Error; - fn into_result(self) -> Result; -} - -impl Try for Option { - type Ok = T; - type Error = NoneError; - - #[inline] - fn into_result(self) -> Result { - self.ok_or(NoneError) - } -} - -impl Try for Result { - type Ok = T; - type Error = E; - - #[inline] - fn into_result(self) -> Self { - self - } -} diff --git a/mqtt/src/client/client.rs b/src/client/client.rs similarity index 100% rename from mqtt/src/client/client.rs rename to src/client/client.rs diff --git a/mqtt/src/client/client_config.rs b/src/client/client_config.rs similarity index 100% rename from mqtt/src/client/client_config.rs rename to src/client/client_config.rs diff --git a/mqtt/src/client/mod.rs b/src/client/mod.rs similarity index 100% rename from mqtt/src/client/mod.rs rename to src/client/mod.rs diff --git a/mqtt/src/encoding/mod.rs b/src/encoding/mod.rs similarity index 100% rename from mqtt/src/encoding/mod.rs rename to src/encoding/mod.rs diff --git a/mqtt/src/encoding/variable_byte_integer.rs b/src/encoding/variable_byte_integer.rs similarity index 100% rename from mqtt/src/encoding/variable_byte_integer.rs rename to src/encoding/variable_byte_integer.rs diff --git a/examples/drogue/src/fmt.rs b/src/fmt.rs similarity index 100% rename from examples/drogue/src/fmt.rs rename to src/fmt.rs diff --git a/mqtt/src/lib.rs b/src/lib.rs similarity index 100% rename from mqtt/src/lib.rs rename to src/lib.rs diff --git a/mqtt/src/network/mod.rs b/src/network/mod.rs similarity index 100% rename from mqtt/src/network/mod.rs rename to src/network/mod.rs diff --git a/mqtt/src/packet/mod.rs b/src/packet/mod.rs similarity index 100% rename from mqtt/src/packet/mod.rs rename to src/packet/mod.rs diff --git a/mqtt/src/packet/v5/auth_packet.rs b/src/packet/v5/auth_packet.rs similarity index 100% rename from mqtt/src/packet/v5/auth_packet.rs rename to src/packet/v5/auth_packet.rs diff --git a/mqtt/src/packet/v5/connack_packet.rs b/src/packet/v5/connack_packet.rs similarity index 100% rename from mqtt/src/packet/v5/connack_packet.rs rename to src/packet/v5/connack_packet.rs diff --git a/mqtt/src/packet/v5/connect_packet.rs b/src/packet/v5/connect_packet.rs similarity index 100% rename from mqtt/src/packet/v5/connect_packet.rs rename to src/packet/v5/connect_packet.rs diff --git a/mqtt/src/packet/v5/disconnect_packet.rs b/src/packet/v5/disconnect_packet.rs similarity index 100% rename from mqtt/src/packet/v5/disconnect_packet.rs rename to src/packet/v5/disconnect_packet.rs diff --git a/mqtt/src/packet/v5/mod.rs b/src/packet/v5/mod.rs similarity index 100% rename from mqtt/src/packet/v5/mod.rs rename to src/packet/v5/mod.rs diff --git a/mqtt/src/packet/v5/mqtt_packet.rs b/src/packet/v5/mqtt_packet.rs similarity index 100% rename from mqtt/src/packet/v5/mqtt_packet.rs rename to src/packet/v5/mqtt_packet.rs diff --git a/mqtt/src/packet/v5/packet_type.rs b/src/packet/v5/packet_type.rs similarity index 100% rename from mqtt/src/packet/v5/packet_type.rs rename to src/packet/v5/packet_type.rs diff --git a/mqtt/src/packet/v5/pingreq_packet.rs b/src/packet/v5/pingreq_packet.rs similarity index 100% rename from mqtt/src/packet/v5/pingreq_packet.rs rename to src/packet/v5/pingreq_packet.rs diff --git a/mqtt/src/packet/v5/pingresp_packet.rs b/src/packet/v5/pingresp_packet.rs similarity index 100% rename from mqtt/src/packet/v5/pingresp_packet.rs rename to src/packet/v5/pingresp_packet.rs diff --git a/mqtt/src/packet/v5/property.rs b/src/packet/v5/property.rs similarity index 100% rename from mqtt/src/packet/v5/property.rs rename to src/packet/v5/property.rs diff --git a/mqtt/src/packet/v5/puback_packet.rs b/src/packet/v5/puback_packet.rs similarity index 100% rename from mqtt/src/packet/v5/puback_packet.rs rename to src/packet/v5/puback_packet.rs diff --git a/mqtt/src/packet/v5/pubcomp_packet.rs b/src/packet/v5/pubcomp_packet.rs similarity index 100% rename from mqtt/src/packet/v5/pubcomp_packet.rs rename to src/packet/v5/pubcomp_packet.rs diff --git a/mqtt/src/packet/v5/publish_packet.rs b/src/packet/v5/publish_packet.rs similarity index 100% rename from mqtt/src/packet/v5/publish_packet.rs rename to src/packet/v5/publish_packet.rs diff --git a/mqtt/src/packet/v5/pubrec_packet.rs b/src/packet/v5/pubrec_packet.rs similarity index 100% rename from mqtt/src/packet/v5/pubrec_packet.rs rename to src/packet/v5/pubrec_packet.rs diff --git a/mqtt/src/packet/v5/pubrel_packet.rs b/src/packet/v5/pubrel_packet.rs similarity index 100% rename from mqtt/src/packet/v5/pubrel_packet.rs rename to src/packet/v5/pubrel_packet.rs diff --git a/mqtt/src/packet/v5/reason_codes.rs b/src/packet/v5/reason_codes.rs similarity index 100% rename from mqtt/src/packet/v5/reason_codes.rs rename to src/packet/v5/reason_codes.rs diff --git a/mqtt/src/packet/v5/suback_packet.rs b/src/packet/v5/suback_packet.rs similarity index 100% rename from mqtt/src/packet/v5/suback_packet.rs rename to src/packet/v5/suback_packet.rs diff --git a/mqtt/src/packet/v5/subscription_packet.rs b/src/packet/v5/subscription_packet.rs similarity index 100% rename from mqtt/src/packet/v5/subscription_packet.rs rename to src/packet/v5/subscription_packet.rs diff --git a/mqtt/src/packet/v5/unsuback_packet.rs b/src/packet/v5/unsuback_packet.rs similarity index 100% rename from mqtt/src/packet/v5/unsuback_packet.rs rename to src/packet/v5/unsuback_packet.rs diff --git a/mqtt/src/packet/v5/unsubscription_packet.rs b/src/packet/v5/unsubscription_packet.rs similarity index 100% rename from mqtt/src/packet/v5/unsubscription_packet.rs rename to src/packet/v5/unsubscription_packet.rs diff --git a/mqtt/src/tests/mod.rs b/src/tests/mod.rs similarity index 100% rename from mqtt/src/tests/mod.rs rename to src/tests/mod.rs diff --git a/mqtt/src/tests/unit/encoding/mod.rs b/src/tests/unit/encoding/mod.rs similarity index 100% rename from mqtt/src/tests/unit/encoding/mod.rs rename to src/tests/unit/encoding/mod.rs diff --git a/mqtt/src/tests/unit/encoding/variable_byte_integer_unit.rs b/src/tests/unit/encoding/variable_byte_integer_unit.rs similarity index 100% rename from mqtt/src/tests/unit/encoding/variable_byte_integer_unit.rs rename to src/tests/unit/encoding/variable_byte_integer_unit.rs diff --git a/mqtt/src/tests/unit/mod.rs b/src/tests/unit/mod.rs similarity index 100% rename from mqtt/src/tests/unit/mod.rs rename to src/tests/unit/mod.rs diff --git a/mqtt/src/tests/unit/packet/mod.rs b/src/tests/unit/packet/mod.rs similarity index 100% rename from mqtt/src/tests/unit/packet/mod.rs rename to src/tests/unit/packet/mod.rs diff --git a/mqtt/src/tests/unit/packet/v5/connack_packet_unit.rs b/src/tests/unit/packet/v5/connack_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/connack_packet_unit.rs rename to src/tests/unit/packet/v5/connack_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/connect_packet_unit.rs b/src/tests/unit/packet/v5/connect_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/connect_packet_unit.rs rename to src/tests/unit/packet/v5/connect_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/disconnect_packet_unit.rs b/src/tests/unit/packet/v5/disconnect_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/disconnect_packet_unit.rs rename to src/tests/unit/packet/v5/disconnect_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/mod.rs b/src/tests/unit/packet/v5/mod.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/mod.rs rename to src/tests/unit/packet/v5/mod.rs diff --git a/mqtt/src/tests/unit/packet/v5/pingreq_packet_unit.rs b/src/tests/unit/packet/v5/pingreq_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/pingreq_packet_unit.rs rename to src/tests/unit/packet/v5/pingreq_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/pingresp_packet_unit.rs b/src/tests/unit/packet/v5/pingresp_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/pingresp_packet_unit.rs rename to src/tests/unit/packet/v5/pingresp_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/puback_packet_unit.rs b/src/tests/unit/packet/v5/puback_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/puback_packet_unit.rs rename to src/tests/unit/packet/v5/puback_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/pubcomp_packet_unit.rs b/src/tests/unit/packet/v5/pubcomp_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/pubcomp_packet_unit.rs rename to src/tests/unit/packet/v5/pubcomp_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/publish_packet_unit.rs b/src/tests/unit/packet/v5/publish_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/publish_packet_unit.rs rename to src/tests/unit/packet/v5/publish_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/pubrec_packet_unit.rs b/src/tests/unit/packet/v5/pubrec_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/pubrec_packet_unit.rs rename to src/tests/unit/packet/v5/pubrec_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/pubrel_packet_unit.rs b/src/tests/unit/packet/v5/pubrel_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/pubrel_packet_unit.rs rename to src/tests/unit/packet/v5/pubrel_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/suback_packet_unit.rs b/src/tests/unit/packet/v5/suback_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/suback_packet_unit.rs rename to src/tests/unit/packet/v5/suback_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/subscription_packet_unit.rs b/src/tests/unit/packet/v5/subscription_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/subscription_packet_unit.rs rename to src/tests/unit/packet/v5/subscription_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/unsuback_packet_unit.rs b/src/tests/unit/packet/v5/unsuback_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/unsuback_packet_unit.rs rename to src/tests/unit/packet/v5/unsuback_packet_unit.rs diff --git a/mqtt/src/tests/unit/packet/v5/unsubscription_packet_unit.rs b/src/tests/unit/packet/v5/unsubscription_packet_unit.rs similarity index 100% rename from mqtt/src/tests/unit/packet/v5/unsubscription_packet_unit.rs rename to src/tests/unit/packet/v5/unsubscription_packet_unit.rs diff --git a/mqtt/src/tests/unit/utils/buffer_reader_unit.rs b/src/tests/unit/utils/buffer_reader_unit.rs similarity index 100% rename from mqtt/src/tests/unit/utils/buffer_reader_unit.rs rename to src/tests/unit/utils/buffer_reader_unit.rs diff --git a/mqtt/src/tests/unit/utils/buffer_writer_unit.rs b/src/tests/unit/utils/buffer_writer_unit.rs similarity index 100% rename from mqtt/src/tests/unit/utils/buffer_writer_unit.rs rename to src/tests/unit/utils/buffer_writer_unit.rs diff --git a/mqtt/src/tests/unit/utils/mod.rs b/src/tests/unit/utils/mod.rs similarity index 100% rename from mqtt/src/tests/unit/utils/mod.rs rename to src/tests/unit/utils/mod.rs diff --git a/mqtt/src/tokio_net/mod.rs b/src/tokio_net/mod.rs similarity index 100% rename from mqtt/src/tokio_net/mod.rs rename to src/tokio_net/mod.rs diff --git a/mqtt/src/tokio_net/tokio_network.rs b/src/tokio_net/tokio_network.rs similarity index 100% rename from mqtt/src/tokio_net/tokio_network.rs rename to src/tokio_net/tokio_network.rs diff --git a/mqtt/src/utils/buffer_reader.rs b/src/utils/buffer_reader.rs similarity index 100% rename from mqtt/src/utils/buffer_reader.rs rename to src/utils/buffer_reader.rs diff --git a/mqtt/src/utils/buffer_writer.rs b/src/utils/buffer_writer.rs similarity index 100% rename from mqtt/src/utils/buffer_writer.rs rename to src/utils/buffer_writer.rs diff --git a/mqtt/src/utils/mod.rs b/src/utils/mod.rs similarity index 100% rename from mqtt/src/utils/mod.rs rename to src/utils/mod.rs diff --git a/mqtt/src/utils/rng_generator.rs b/src/utils/rng_generator.rs similarity index 100% rename from mqtt/src/utils/rng_generator.rs rename to src/utils/rng_generator.rs diff --git a/mqtt/src/utils/types.rs b/src/utils/types.rs similarity index 100% rename from mqtt/src/utils/types.rs rename to src/utils/types.rs diff --git a/mqtt/tests/integration_test_single.rs b/tests/integration_test_single.rs similarity index 100% rename from mqtt/tests/integration_test_single.rs rename to tests/integration_test_single.rs diff --git a/mqtt/tests/load_test.rs b/tests/load_test.rs similarity index 100% rename from mqtt/tests/load_test.rs rename to tests/load_test.rs