in jobs/source/IotJobsClient.cpp [411:455]
bool IotJobsClient::SubscribeToUpdateJobExecutionAccepted(
const Aws::Iotjobs::UpdateJobExecutionSubscriptionRequest &request,
Aws::Crt::Mqtt::QOS qos,
const OnSubscribeToUpdateJobExecutionAcceptedResponse &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::Iotjobs::UpdateJobExecutionResponse response(jsonObject);
handler(&response, AWS_ERROR_SUCCESS);
};
Aws::Crt::StringStream subscribeTopicSStr;
subscribeTopicSStr << "$aws/things/" << *request.ThingName << "/jobs/" << *request.JobId
<< "/update/accepted";
return m_connection->Subscribe(
subscribeTopicSStr.str().c_str(),
qos,
std::move(onSubscribePublish),
std::move(onSubscribeComplete)) != 0;
}