PIMQTT::Message now Const & Mutable (as in PIHTTP)
This commit is contained in:
@@ -41,12 +41,12 @@ PRIVATE_DEFINITION_START(PIMQTT::Client)
|
||||
}
|
||||
|
||||
static int messageArrived_callback(void * context, char * topicName, int topicLen, MQTTClient_message * message) {
|
||||
PIMQTT::Message msg;
|
||||
msg.topic = PIString::fromUTF8(topicName);
|
||||
msg.payload = PIByteArray(message->payload, message->payloadlen);
|
||||
msg.msg_id = message->msgid;
|
||||
msg.is_duplicate = message->dup != 0;
|
||||
msg.qos = static_cast<PIMQTT::QoS>(message->qos);
|
||||
PIMQTT::MessageMutable msg;
|
||||
msg.setTopic(PIString::fromUTF8(topicName));
|
||||
msg.setPayload(PIByteArray(message->payload, message->payloadlen));
|
||||
msg.setID(message->msgid);
|
||||
msg.setDuplicate(message->dup != 0);
|
||||
msg.setQos(static_cast<PIMQTT::QoS>(message->qos));
|
||||
MQTTClient_freeMessage(&message);
|
||||
MQTTClient_free(topicName);
|
||||
((PIMQTT::Client *)context)->mqtt_messageArrived(msg);
|
||||
@@ -101,12 +101,17 @@ void PIMQTT::Client::unsubscribe(const PIString & topic) {
|
||||
|
||||
|
||||
void PIMQTT::Client::publish(const PIString & topic, const PIByteArray & msg, QoS qos) {
|
||||
MessageMutable m;
|
||||
m.setTopic(topic);
|
||||
m.setPayload(msg);
|
||||
m.setQos(qos);
|
||||
publish(m);
|
||||
}
|
||||
|
||||
|
||||
void PIMQTT::Client::publish(const MessageConst & msg) {
|
||||
if (is_destoying) return;
|
||||
Message m;
|
||||
m.topic = topic;
|
||||
m.payload = msg;
|
||||
m.qos = qos;
|
||||
worker->enqueueTask([this, m] { publishInternal(m); });
|
||||
worker->enqueueTask([this, msg] { publishInternal(msg); });
|
||||
}
|
||||
|
||||
|
||||
@@ -121,7 +126,7 @@ void PIMQTT::Client::mqtt_connectionLost() {
|
||||
void PIMQTT::Client::mqtt_deliveryComplete(int token) {}
|
||||
|
||||
|
||||
void PIMQTT::Client::mqtt_messageArrived(const Message & msg) {
|
||||
void PIMQTT::Client::mqtt_messageArrived(const MessageConst & msg) {
|
||||
piCoutObj << "mqtt_messageArrived";
|
||||
received(msg);
|
||||
}
|
||||
@@ -169,13 +174,13 @@ inline void PIMQTT::Client::disconnectInternal() {
|
||||
}
|
||||
|
||||
|
||||
void PIMQTT::Client::publishInternal(const Message & m) {
|
||||
void PIMQTT::Client::publishInternal(const MessageConst & m) {
|
||||
if (!PRIVATE->client) return;
|
||||
MQTTClient_message pubmsg = MQTTClient_message_initializer;
|
||||
pubmsg.payload = const_cast<void *>(static_cast<const void *>(m.payload.data()));
|
||||
pubmsg.payloadlen = m.payload.size_s();
|
||||
pubmsg.qos = static_cast<int>(m.qos);
|
||||
int ret = MQTTClient_publishMessage(PRIVATE->client, m.topic.dataAscii(), &pubmsg, nullptr);
|
||||
pubmsg.payload = const_cast<void *>(static_cast<const void *>(m.payload().data()));
|
||||
pubmsg.payloadlen = m.payload().size_s();
|
||||
pubmsg.qos = static_cast<int>(m.qos());
|
||||
int ret = MQTTClient_publishMessage(PRIVATE->client, m.topic().dataAscii(), &pubmsg, nullptr);
|
||||
if (ret != MQTTCLIENT_SUCCESS) {
|
||||
piCoutObj << "Failed to publishMessage, code" << ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user