summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2024-04-05 11:37:00 +0200
committerMatthias Beyer <mail@beyermatthias.de>2024-04-05 11:44:44 +0200
commit26166f09aafd5f5828f18722c007f19724d8d254 (patch)
tree6f401f8e486e86e05a993a009a0d7a5f5054c8f1
parentdd4c376cde57fc822dfbe0a4db86ef2b2d2e0509 (diff)
Use MqttClient::builder() to build client
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--Cargo.lock2
-rw-r--r--cloudmqtt-bin/Cargo.toml2
-rw-r--r--cloudmqtt-bin/src/bin/client.rs16
3 files changed, 19 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock
index e08663d..d063591 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -224,7 +224,9 @@ version = "0.1.0"
dependencies = [
"clap",
"cloudmqtt",
+ "futures",
"tokio",
+ "tracing",
"tracing-subscriber",
]
diff --git a/cloudmqtt-bin/Cargo.toml b/cloudmqtt-bin/Cargo.toml
index 97ec8a4..efc755b 100644
--- a/cloudmqtt-bin/Cargo.toml
+++ b/cloudmqtt-bin/Cargo.toml
@@ -8,5 +8,7 @@ edition = "2021"
[dependencies]
clap = { version = "4.5.4", features = ["derive"] }
cloudmqtt = { version = "0.5.0", path = ".." }
+futures = "0.3.30"
tokio = { version = "1.37.0", features = ["full"] }
+tracing = "0.1.40"
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
diff --git a/cloudmqtt-bin/src/bin/client.rs b/cloudmqtt-bin/src/bin/client.rs
index 43e9743..0c8ebf0 100644
--- a/cloudmqtt-bin/src/bin/client.rs
+++ b/cloudmqtt-bin/src/bin/client.rs
@@ -11,6 +11,7 @@ use cloudmqtt::client::connect::MqttClientConnector;
use cloudmqtt::client::send::Publish;
use cloudmqtt::client::MqttClient;
use cloudmqtt::transport::MqttConnectTransport;
+use futures::FutureExt;
use tokio::net::TcpStream;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
@@ -52,7 +53,20 @@ async fn main() {
cloudmqtt::keep_alive::KeepAlive::Seconds(5.try_into().unwrap()),
);
- let client = MqttClient::new_with_default_handlers();
+ let client = MqttClient::builder()
+ .with_on_packet_recv(Box::new(|packet| {
+ tracing::trace!(?packet, "Received packet")
+ }))
+ .with_handle_acknowledge(Box::new(|packet| {
+ async move {
+ tracing::trace!(?packet, "Acknowledging packet");
+ cloudmqtt::client::send::Acknowledge::Yes
+ }
+ .boxed()
+ }))
+ .build()
+ .await
+ .unwrap();
let connected = client.connect(connector).await.unwrap();
let background = tokio::task::spawn(connected.background_task);