static void clearPendingAcknowledgments()

in source/core_mqtt_agent.c [838:874]


static void clearPendingAcknowledgments( MQTTAgentContext_t * pMqttAgentContext,
                                         bool clearOnlySubUnsubEntries )
{
    size_t i = 0;
    MQTTAgentAckInfo_t * pendingAcks;

    assert( pMqttAgentContext != NULL );

    pendingAcks = pMqttAgentContext->pPendingAcks;

    /* Clear all operations pending acknowledgments. */
    for( i = 0; i < MQTT_AGENT_MAX_OUTSTANDING_ACKS; i++ )
    {
        if( pendingAcks[ i ].packetId != MQTT_PACKET_ID_INVALID )
        {
            bool clearEntry = true;

            assert( pendingAcks[ i ].pOriginalCommand != NULL );

            if( clearOnlySubUnsubEntries &&
                ( pendingAcks[ i ].pOriginalCommand->commandType != SUBSCRIBE ) &&
                ( pendingAcks[ i ].pOriginalCommand->commandType != UNSUBSCRIBE ) )
            {
                clearEntry = false;
            }

            if( clearEntry )
            {
                /* Receive failed to indicate network error. */
                concludeCommand( pMqttAgentContext, pendingAcks[ i ].pOriginalCommand, MQTTRecvFailed, NULL );

                /* Now remove it from the list. */
                ( void ) memset( &( pendingAcks[ i ] ), 0x00, sizeof( MQTTAgentAckInfo_t ) );
            }
        }
    }
}