From 26166f09aafd5f5828f18722c007f19724d8d254 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 5 Apr 2024 11:37:00 +0200 Subject: Use MqttClient::builder() to build client Signed-off-by: Matthias Beyer --- Cargo.lock | 2 ++ cloudmqtt-bin/Cargo.toml | 2 ++ cloudmqtt-bin/src/bin/client.rs | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3