in source/mqtt/MqttClient.cpp [177:211]
void MqttConnection::s_onMultiSubAck(
aws_mqtt_client_connection *,
uint16_t packetId,
const struct aws_array_list *topicSubacks,
int errorCode,
void *userData)
{
auto callbackData = reinterpret_cast<MultiSubAckCallbackData *>(userData);
if (callbackData->onSubAck)
{
size_t length = aws_array_list_length(topicSubacks);
Vector<String> topics;
topics.reserve(length);
QOS qos = AWS_MQTT_QOS_AT_MOST_ONCE;
for (size_t i = 0; i < length; ++i)
{
aws_mqtt_topic_subscription *subscription = NULL;
aws_array_list_get_at(topicSubacks, &subscription, i);
topics.push_back(
String(reinterpret_cast<char *>(subscription->topic.ptr), subscription->topic.len));
qos = subscription->qos;
}
callbackData->onSubAck(*callbackData->connection, packetId, topics, qos, errorCode);
}
if (callbackData->topic)
{
aws_mem_release(
callbackData->allocator, reinterpret_cast<void *>(const_cast<char *>(callbackData->topic)));
}
Crt::Delete(callbackData, callbackData->allocator);
}