in secure_tunneling/source/IotSecureTunnelingClient.cpp [42:91]
bool IotSecureTunnelingClient::SubscribeToTunnelsNotify(
const Aws::Iotsecuretunneling::SubscribeToTunnelsNotifyRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnSubscribeToTunnelsNotifyResponse &handler,
const OnSubscribeComplete &onSubAck)
{
(void)request;
auto onSubscribeComplete = [handler, onSubAck](
Aws::Crt::Mqtt::MqttConnection &,
uint16_t,
const Aws::Crt::String &topic,
Aws::Crt::Mqtt::QOS,
int errorCode)
{
(void)topic;
if (errorCode)
{
handler(nullptr, errorCode);
}
if (onSubAck)
{
onSubAck(errorCode);
}
};
auto onSubscribePublish =
[handler](Aws::Crt::Mqtt::MqttConnection &, const Aws::Crt::String &, const Aws::Crt::ByteBuf &payload)
{
Aws::Crt::String objectStr(reinterpret_cast<char *>(payload.buffer), payload.len);
Aws::Crt::JsonObject jsonObject(objectStr);
Aws::Iotsecuretunneling::SecureTunnelingNotifyResponse response(jsonObject);
handler(&response, AWS_ERROR_SUCCESS);
};
Aws::Crt::StringStream subscribeTopicSStr;
subscribeTopicSStr << "$aws"
<< "/"
<< "things"
<< "/" << *request.ThingName << "/"
<< "tunnels"
<< "/"
<< "notify";
return m_connection->Subscribe(
subscribeTopicSStr.str().c_str(),
qos,
std::move(onSubscribePublish),
std::move(onSubscribeComplete)) != 0;
}