Commit bf9612351bfab03cec6a51ecb2655fc776876adc
1 parent
33d19cec
Corrected subscribing a bit
Showing
3 changed files
with
11 additions
and
11 deletions
mqttpacket.cpp
| ... | ... | @@ -196,19 +196,20 @@ void MqttPacket::handleSubscribe(std::shared_ptr<SubscriptionStore> &subscriptio |
| 196 | 196 | { |
| 197 | 197 | uint16_t packet_id = readTwoBytesToUInt16(); |
| 198 | 198 | |
| 199 | - std::list<std::string> subs; // TODO: list of tuples, probably | |
| 200 | - while (remainingAfterPos() > 1) | |
| 199 | + std::list<char> subs_reponse_codes; | |
| 200 | + while (remainingAfterPos() > 0) | |
| 201 | 201 | { |
| 202 | 202 | uint16_t topicLength = readTwoBytesToUInt16(); |
| 203 | 203 | std::string topic(readBytes(topicLength), topicLength); |
| 204 | + char qos = readByte(); | |
| 205 | + if (qos > 0) | |
| 206 | + throw NotImplementedException("QoS not implemented"); | |
| 204 | 207 | std::cout << sender->repr() << " Subscribed to " << topic << std::endl; |
| 205 | 208 | subscriptionStore->addSubscription(sender, topic); |
| 206 | - subs.push_back(std::move(topic)); | |
| 209 | + subs_reponse_codes.push_back(qos); | |
| 207 | 210 | } |
| 208 | 211 | |
| 209 | - char flags = readByte(); | |
| 210 | - | |
| 211 | - SubAck subAck(packet_id, subs); | |
| 212 | + SubAck subAck(packet_id, subs_reponse_codes); | |
| 212 | 213 | MqttPacket response(subAck); |
| 213 | 214 | sender->writeMqttPacket(response); |
| 214 | 215 | } | ... | ... |
types.cpp
| ... | ... | @@ -6,13 +6,12 @@ ConnAck::ConnAck(ConnAckReturnCodes return_code) : |
| 6 | 6 | |
| 7 | 7 | } |
| 8 | 8 | |
| 9 | -SubAck::SubAck(uint16_t packet_id, const std::list<std::string> &subs) : | |
| 9 | +SubAck::SubAck(uint16_t packet_id, const std::list<char> &subs_qos_reponses) : | |
| 10 | 10 | packet_id(packet_id) |
| 11 | 11 | { |
| 12 | - // dummy | |
| 13 | - for(size_t i = 0; i < subs.size(); i++) | |
| 12 | + for (char ack_code : subs_qos_reponses) | |
| 14 | 13 | { |
| 15 | - responses.push_back(SubAckReturnCodes::MaxQoS0); | |
| 14 | + responses.push_back(static_cast<SubAckReturnCodes>(ack_code)); | |
| 16 | 15 | } |
| 17 | 16 | } |
| 18 | 17 | ... | ... |
types.h
| ... | ... | @@ -64,7 +64,7 @@ class SubAck |
| 64 | 64 | public: |
| 65 | 65 | uint16_t packet_id; |
| 66 | 66 | std::list<SubAckReturnCodes> responses; |
| 67 | - SubAck(uint16_t packet_id, const std::list<std::string> &subs); | |
| 67 | + SubAck(uint16_t packet_id, const std::list<char> &subs_qos_reponses); | |
| 68 | 68 | }; |
| 69 | 69 | |
| 70 | 70 | class Publish | ... | ... |