in sdk/src/azure/iot/az_iot_hub_client_methods.c [24:77]
AZ_NODISCARD az_result az_iot_hub_client_methods_parse_received_topic(
az_iot_hub_client const* client,
az_span received_topic,
az_iot_hub_client_method_request* out_request)
{
_az_PRECONDITION_NOT_NULL(client);
_az_PRECONDITION_VALID_SPAN(client->_internal.iot_hub_hostname, 1, false);
_az_PRECONDITION_VALID_SPAN(received_topic, 1, false);
_az_PRECONDITION_NOT_NULL(out_request);
(void)client;
int32_t index = az_span_find(received_topic, methods_topic_prefix);
if (index == -1)
{
return AZ_ERROR_IOT_TOPIC_NO_MATCH;
}
if (_az_LOG_SHOULD_WRITE(AZ_LOG_MQTT_RECEIVED_TOPIC))
{
_az_LOG_WRITE(AZ_LOG_MQTT_RECEIVED_TOPIC, received_topic);
}
received_topic = az_span_slice(
received_topic, index + az_span_size(methods_topic_prefix), az_span_size(received_topic));
index = az_span_find(received_topic, methods_topic_filter_suffix);
if (index == -1)
{
return AZ_ERROR_IOT_TOPIC_NO_MATCH;
}
received_topic = az_span_slice(
received_topic,
index + az_span_size(methods_topic_filter_suffix),
az_span_size(received_topic));
index = az_span_find(received_topic, methods_response_topic_properties);
if (index == -1)
{
return AZ_ERROR_IOT_TOPIC_NO_MATCH;
}
out_request->name = az_span_slice(received_topic, 0, index);
out_request->request_id = az_span_slice(
received_topic,
index + az_span_size(methods_response_topic_properties),
az_span_size(received_topic));
return AZ_OK;
}