in source/azure_iot_hub_client.c [460:504]
static AzureIoTResult_t prvWaitForSubAck( AzureIoTHubClient_t * pxAzureIoTHubClient,
AzureIoTHubClientReceiveContext_t * pxContext,
uint32_t ulTimeoutMilliseconds )
{
AzureIoTResult_t xResult = eAzureIoTErrorSubackWaitTimeout;
uint32_t ulWaitTime;
AZLogDebug( ( "Waiting for sub ack id: %d", pxContext->_internal.usMqttSubPacketID ) );
do
{
if( pxContext->_internal.usState == azureiothubTOPIC_SUBSCRIBE_STATE_SUBACK )
{
xResult = eAzureIoTSuccess;
break;
}
if( ulTimeoutMilliseconds > azureiothubSUBACK_WAIT_INTERVAL_MS )
{
ulTimeoutMilliseconds -= azureiothubSUBACK_WAIT_INTERVAL_MS;
ulWaitTime = azureiothubSUBACK_WAIT_INTERVAL_MS;
}
else
{
ulWaitTime = ulTimeoutMilliseconds;
ulTimeoutMilliseconds = 0;
}
if( AzureIoTMQTT_ProcessLoop( &pxAzureIoTHubClient->_internal.xMQTTContext, ulWaitTime ) != eAzureIoTMQTTSuccess )
{
xResult = eAzureIoTErrorFailed;
break;
}
} while( ulTimeoutMilliseconds );
if( pxContext->_internal.usState == azureiothubTOPIC_SUBSCRIBE_STATE_SUBACK )
{
xResult = eAzureIoTSuccess;
}
AZLogDebug( ( "Done waiting for sub ack id: %d, result: 0x%08x",
pxContext->_internal.usMqttSubPacketID, xResult ) );
return xResult;
}