eclipse / paho.mqtt.cpp

Other
988 stars 426 forks source link

msg->get_properties() not working in message_arrived #505

Open greg887 opened 1 month ago

greg887 commented 1 month ago

Is there a bug in msg->get_properties() ? Am I doing anything wrong? I looked at the properties samples and I'm using it in the same way. I tried different brokers thinking something in the broker could be wrong and I get the same results. I also installed the latest mosquitto broker in my laptop and used localhost as broker and it didn't work.

properties in paho cpp are not working when I use msg->get_properties() in message_arrived, but properties in message_arrive work in python. I run both subscribers the python version and the cpp version at the same time subscribing to the same topic (the publisher is in c++)

Subscriber python version output: Received message: Hello, MQTT! on topic ggg/test/topic Message Properties: [UserProperty : [('key1', 'value1'), ('key2', 'value2')]]

Subscriber c++ output: Message arrived: ggg/test/topic -> Hello, MQTT! No hay user property, porqueeee?? (This means "There is no user property, whyyyy?" ) Is props empty? '1' props size: '0'

Below is my c++ subscriber message_arrived code ` void message_arrived(mqtt::const_message_ptr msg) override { std::cout << "Message arrived: " << msg->get_topic() << " -> " << msg->to_string() << std::endl;

    const mqtt::properties& props = msg->get_properties();

    if (props.contains(mqtt::property::USER_PROPERTY)){
        std::cout << "Lo logrè, mamà\n" << std::endl;
    }
    else {
        std::cout << "No hay user property, porqueeee??" << std::endl;
    }

    std::cout << "Is props empty? '" << props.empty() << "'" << std::endl;
    std::cout << "props size: '" << props.size() << "'" << std::endl;

}`

Please kindly help!

fpagliughi commented 1 month ago

I was working on properties recently. Hopefully I didn’t add a bug.

What version of the library are you using?

greg887 commented 1 month ago
const uint32_t VERSION = 0x01030001;
/** The version string for the client library  */
const string VERSION_STR("Paho MQTT C++ (mqttpp) v. 1.3.1");

thanks for all the amazing work!

fpagliughi commented 1 month ago

It seems to be working fine in the latest 'develop' branch, which I'm working on at the moment (for the next v1.5 release). I'll double check v1.3.1 to see what I can can find, but I don't see any modifications in the message class that would explain it; nor anything in the changelog mentioning a fix.

But just FYI, I've recently dropped a bunch of stuff in the code to make it easier to deal with properties on incoming messages and server responses. Like an iterator for properties and a few more methods to get it to act like an STL collection, like begin(), end(), etc. Plus a stream inserter for property for printing them out.

greg887 commented 1 month ago

I just installed v1.4.0 and I'm still getting the same error, I removed paho 1.3.1 and re-install paho.

Do you have any estimate of when v1.5 could be released?

Those are going to be great features.

Thanks!