in commands/source/IotCommandsClientV2.cpp [76:119]
static void s_UpdateCommandExecutionResponseHandler(
Aws::Iot::RequestResponse::UnmodeledResult &&result,
const UpdateCommandExecutionResultHandler &handler,
const Aws::Crt::String &successPathTopic,
const Aws::Crt::String &failurePathTopic)
{
using E = V2ErrorResponse;
using R = Aws::Iot::RequestResponse::Result<UpdateCommandExecutionResponse, ServiceErrorV2<E>>;
if (!result.IsSuccess())
{
s_applyUnmodeledErrorToHandler<R, E>(handler, result.GetError());
return;
}
auto response = result.GetResponse();
const auto &payload = response.GetPayload();
Aws::Crt::String objectStr(reinterpret_cast<char *>(payload.ptr), payload.len);
Aws::Crt::JsonObject jsonObject(objectStr);
if (!jsonObject.WasParseSuccessful())
{
s_applyUnmodeledErrorToHandler<R, E>(handler, AWS_ERROR_MQTT_REQUEST_RESPONSE_PAYLOAD_PARSE_ERROR);
return;
}
const auto &topic = response.GetTopic();
auto responseTopic = Aws::Crt::String((const char *)topic.ptr, topic.len);
if (responseTopic == successPathTopic)
{
UpdateCommandExecutionResponse modeledResponse(jsonObject);
Aws::Iot::RequestResponse::Result<UpdateCommandExecutionResponse, ServiceErrorV2<E>> finalResult(
std::move(modeledResponse));
handler(std::move(finalResult));
}
else if (responseTopic == failurePathTopic)
{
V2ErrorResponse modeledError(jsonObject);
s_applyModeledErrorToHandler<R, E>(handler, std::move(modeledError));
}
else
{
s_applyUnmodeledErrorToHandler<R, E>(handler, AWS_ERROR_MQTT_REQUEST_RESPONSE_INVALID_RESPONSE_PATH);
}
}