MqttClient / UnSubscribe message implemented
This commit is contained in:
@@ -373,6 +373,7 @@ if (message.type() != MqttMessage::Type::PingReq && message.type() != MqttMessag
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case MqttMessage::Type::Subscribe:
|
case MqttMessage::Type::Subscribe:
|
||||||
|
case MqttMessage::Type::UnSubscribe:
|
||||||
{
|
{
|
||||||
if (!mqtt_connected) break;
|
if (!mqtt_connected) break;
|
||||||
payload = header+2;
|
payload = header+2;
|
||||||
@@ -384,7 +385,15 @@ if (message.type() != MqttMessage::Type::PingReq && message.type() != MqttMessag
|
|||||||
debug( " topic (" << std::string(payload, len) << ')');
|
debug( " topic (" << std::string(payload, len) << ')');
|
||||||
outstring("Subscribes", payload, len);
|
outstring("Subscribes", payload, len);
|
||||||
// subscribe(Topic(payload, len));
|
// subscribe(Topic(payload, len));
|
||||||
subscriptions.insert(Topic(payload, len));
|
Topic topic(payload, len);
|
||||||
|
if ((message.type() & 0XF0) == MqttMessage::Type::Subscribe)
|
||||||
|
subscriptions.insert(topic);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto it=subscriptions.find(topic);
|
||||||
|
if (it != subscriptions.end())
|
||||||
|
subscriptions.erase(it);
|
||||||
|
}
|
||||||
payload += len;
|
payload += len;
|
||||||
uint8_t qos = *payload++;
|
uint8_t qos = *payload++;
|
||||||
debug(" qos=" << qos);
|
debug(" qos=" << qos);
|
||||||
|
|||||||
@@ -39,15 +39,16 @@ class MqttMessage
|
|||||||
public:
|
public:
|
||||||
enum Type
|
enum Type
|
||||||
{
|
{
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
Connect = 0x10,
|
Connect = 0x10,
|
||||||
ConnAck = 0x20,
|
ConnAck = 0x20,
|
||||||
Publish = 0x30,
|
Publish = 0x30,
|
||||||
PubAck = 0x40,
|
PubAck = 0x40,
|
||||||
Subscribe = 0x80,
|
Subscribe = 0x80,
|
||||||
SubAck = 0x90,
|
SubAck = 0x90,
|
||||||
PingReq = 0xC0,
|
UnSubscribe = 0xA0,
|
||||||
PingResp = 0xD0,
|
PingReq = 0xC0,
|
||||||
|
PingResp = 0xD0,
|
||||||
};
|
};
|
||||||
enum State
|
enum State
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user