#include "Unsubscribe.hpp" using AsyncMqttClientInternals::UnsubscribeOutPacket; UnsubscribeOutPacket::UnsubscribeOutPacket(const char* topic) { char fixedHeader[5]; fixedHeader[0] = AsyncMqttClientInternals::PacketType.UNSUBSCRIBE; fixedHeader[0] = fixedHeader[0] << 4; fixedHeader[0] = fixedHeader[0] | AsyncMqttClientInternals::HeaderFlag.UNSUBSCRIBE_RESERVED; uint16_t topicLength = strlen(topic); char topicLengthBytes[2]; topicLengthBytes[0] = topicLength >> 8; topicLengthBytes[1] = topicLength & 0xFF; uint8_t remainingLengthLength = AsyncMqttClientInternals::Helpers::encodeRemainingLength(2 + 2 + topicLength, fixedHeader + 1); size_t neededSpace = 0; neededSpace += 1 + remainingLengthLength; neededSpace += 2; neededSpace += 2; neededSpace += topicLength; _packetId = _getNextPacketId(); char packetIdBytes[2]; packetIdBytes[0] = _packetId >> 8; packetIdBytes[1] = _packetId & 0xFF; _data.insert(_data.end(), fixedHeader, fixedHeader + 1 + remainingLengthLength); _data.insert(_data.end(), packetIdBytes, packetIdBytes + 2); _data.insert(_data.end(), topicLengthBytes, topicLengthBytes + 2); _data.insert(_data.end(), topic, topic + topicLength); _released = false; } const uint8_t* UnsubscribeOutPacket::data(size_t index) const { return &_data.data()[index]; } size_t UnsubscribeOutPacket::size() const { return _data.size(); }