diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2024-04-05 11:37:00 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2024-04-05 11:44:44 +0200 |
commit | 26166f09aafd5f5828f18722c007f19724d8d254 (patch) | |
tree | 6f401f8e486e86e05a993a009a0d7a5f5054c8f1 | |
parent | dd4c376cde57fc822dfbe0a4db86ef2b2d2e0509 (diff) |
Use MqttClient::builder() to build client
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | Cargo.lock | 2 | ||||
-rw-r--r-- | cloudmqtt-bin/Cargo.toml | 2 | ||||
-rw-r--r-- | cloudmqtt-bin/src/bin/client.rs | 16 |
3 files changed, 19 insertions, 1 deletions
@@ -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); |