extern crate mosquitto_client as mosq;
use mosq::Mosquitto;
fn main() {
let m = on_connect();
let mut bonzo = m.subscribe("bonzo/#",0).expect("can't subscribe to bonzo");
let mut frodo = m.subscribe("frodo/#",0).expect("can't subscribe to frodo");
m.publish("bonzo/baggins", "hi".as_bytes(), 1, false).unwrap();
m.publish("frodo/baggins", "hi".as_bytes(), 1, false).unwrap();
on_message(&m, &mut bonzo, &mut frodo);
m.loop_forever(200).expect("broken loop");
}
fn on_connect() -> mosq::Mosquitto {
let m = Mosquitto::new("test");
m.connect("broker.hivemq.com",1883).expect("can't connect");
m
}
fn on_message(m: &mosq::Mosquitto, bonzo: &mut mosq::TopicMatcher<'_>, frodo: &mut mosq::TopicMatcher<'_>) {
let mut mc = m.callbacks(());
mc.on_message(|_,msg| {
if ! msg.retained() {
if bonzo.matches(&msg) {
println!("bonzo {:?}",msg);
} else
if frodo.matches(&msg) {
println!("frodo {:?}",msg);
}
}
});
}
When this code is executed no on_messages are printed eventhough I have published and subscribed? What is the problem?