added reply to message subscribe and unsubscribe

This commit is contained in:
terror
2021-09-25 15:44:09 +03:00
parent dfd5983715
commit f1d3a15498

View File

@@ -510,17 +510,25 @@ if (mesg->type() != MqttMessage::Type::PingReq && mesg->type() != MqttMessage::T
payload = header+2; payload = header+2;
debug("un/subscribe loop"); debug("un/subscribe loop");
std::vector<char> qoss;
while(payload < mesg->end()) while(payload < mesg->end())
{ {
mesg->getString(payload, len); // Topic mesg->getString(payload, len); // Topic
debug( " topic (" << std::string(payload, len) << ')'); debug( " topic (" << std::string(payload, len) << ')');
// subscribe(Topic(payload, len)); // subscribe(Topic(payload, len));
Topic topic(payload, len); Topic topic(payload, len);
payload += len; payload += len;
if ((mesg->type() & 0XF0) == MqttMessage::Type::Subscribe) if ((mesg->type() & 0XF0) == MqttMessage::Type::Subscribe)
{ {
uint8_t qos = *payload++; uint8_t qos = *payload++;
if (qos != 0) debug("Unsupported QOS" << qos << endl); if (qos != 0)
{
debug("Unsupported QOS" << qos << endl);
qoss.push_back(0x80);
}
else
qoss.push_back(qos);
subscriptions.insert(topic); subscriptions.insert(topic);
} }
else else
@@ -533,6 +541,22 @@ if (mesg->type() != MqttMessage::Type::PingReq && mesg->type() != MqttMessage::T
debug("end loop"); debug("end loop");
bclose = false; bclose = false;
// TODO SUBACK // TODO SUBACK
if ((mesg->type() & 0XF0) == MqttMessage::Type::Subscribe)
{
sMQTTMessage msg(sMQTTMessage::Type::SubAck);
msg.add(header[0]);
msg.add(header[1]);
for (int i = 0; i<qoss.size(); i++)
msg.add(qoss[i]);
msg.sendTo(this);
}
else
{
sMQTTMessage msg(sMQTTMessage::Type::UnSuback);
msg.add(header[0]);
msg.add(header[1]);
msg.sendTo(this);
}
} }
break; break;