diff --git a/MQTTSNGateway/src/MQTTGWPublishHandler.cpp b/MQTTSNGateway/src/MQTTGWPublishHandler.cpp index cbca3e7..9497414 100644 --- a/MQTTSNGateway/src/MQTTGWPublishHandler.cpp +++ b/MQTTSNGateway/src/MQTTGWPublishHandler.cpp @@ -49,6 +49,7 @@ void MQTTGWPublishHandler::handlePublish(Client* client, MQTTGWPacket* packet) /* create MQTTSN_topicid */ MQTTSN_topicid topicId; + uint16_t id = 0; if (pub.topiclen == 2) { @@ -61,11 +62,14 @@ void MQTTGWPublishHandler::handlePublish(Client* client, MQTTGWPacket* packet) topicId.type = MQTTSN_TOPIC_TYPE_NORMAL; topicId.data.long_.len = pub.topiclen; topicId.data.long_.name = pub.topic; - unsigned short id = client->getTopics()->getTopicId(&topicId); - topicId.data.id = id; + id = client->getTopics()->getTopicId(&topicId); } - if (topicId.data.id == 0) + if (id > 0) + { + topicId.data.id = id; + } + else { /* This message might be subscribed with wild card. */ Topic* topic = client->getTopics()->match(&topicId); @@ -85,7 +89,7 @@ void MQTTGWPublishHandler::handlePublish(Client* client, MQTTGWPacket* packet) /* add the Topic and get a TopicId */ topic = client->getTopics()->add(&topicId); - uint16_t id = topic->getTopicId(); + id = topic->getTopicId(); if (id > 0) { diff --git a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp index 7701af8..5d093dc 100644 --- a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp @@ -136,7 +136,7 @@ void BrokerRecvTask::run(void) client->getNetwork()->close(); delete packet; - /* delete client when the client is not authorized on & session is clean */ + /* delete client when the client is not authorized & session is clean */ _gateway->getClientList()->erase(client); if ( client ) diff --git a/MQTTSNGateway/src/MQTTSNGWClient.cpp b/MQTTSNGateway/src/MQTTSNGWClient.cpp index 965e90e..93bee22 100644 --- a/MQTTSNGateway/src/MQTTSNGWClient.cpp +++ b/MQTTSNGateway/src/MQTTSNGWClient.cpp @@ -830,7 +830,7 @@ Topics::~Topics() } } -uint16_t Topics::getTopicId(MQTTSN_topicid* topicid) +uint16_t Topics::getTopicId(const MQTTSN_topicid* topicid) { if (topicid->type != MQTTSN_TOPIC_TYPE_NORMAL) { @@ -863,7 +863,7 @@ Topic* Topics::getTopic(uint16_t id) return 0; } -Topic* Topics::getTopic(MQTTSN_topicid* topicid) +Topic* Topics::getTopic(const MQTTSN_topicid* topicid) { Topic* p = _first; while (p) @@ -877,7 +877,7 @@ Topic* Topics::getTopic(MQTTSN_topicid* topicid) return 0; } -Topic* Topics::add(MQTTSN_topicid* topicid) +Topic* Topics::add(const MQTTSN_topicid* topicid) { Topic* topic; uint16_t id = 0; @@ -901,7 +901,7 @@ Topic* Topics::add(MQTTSN_topicid* topicid) } -Topic* Topics::add(string* topicName) +Topic* Topics::add(const string* topicName) { Topic* topic = 0; @@ -942,7 +942,7 @@ uint16_t Topics::getNextTopicId() return ++_nextTopicId == 0xffff ? _nextTopicId += 2 : _nextTopicId; } -Topic* Topics::match(MQTTSN_topicid* topicid) +Topic* Topics::match(const MQTTSN_topicid* topicid) { if (topicid->type != MQTTSN_TOPIC_TYPE_NORMAL) { diff --git a/MQTTSNGateway/src/MQTTSNGWClient.h b/MQTTSNGateway/src/MQTTSNGWClient.h index c4012c7..76c5c11 100644 --- a/MQTTSNGateway/src/MQTTSNGWClient.h +++ b/MQTTSNGateway/src/MQTTSNGWClient.h @@ -127,13 +127,13 @@ class Topics public: Topics(); ~Topics(); - Topic* add(MQTTSN_topicid* topicid); - Topic* add(string* topic); - uint16_t getTopicId(MQTTSN_topicid* topic); + Topic* add(const MQTTSN_topicid* topicid); + Topic* add(const string* topic); + uint16_t getTopicId(const MQTTSN_topicid* topic); uint16_t getNextTopicId(); Topic* getTopic(uint16_t topicId); - Topic* getTopic(MQTTSN_topicid* topicid); - Topic* match(MQTTSN_topicid* topicid); + Topic* getTopic(const MQTTSN_topicid* topicid); + Topic* match(const MQTTSN_topicid* topicid); private: uint16_t _nextTopicId;