static TopicSuffix_t parseTopicSuffix()

in source/fleet_provisioning.c [316:372]


static TopicSuffix_t parseTopicSuffix( const char * pRemainingTopic,
                                       uint16_t remainingLength )
{
    TopicSuffix_t ret = TopicInvalidSuffix;
    FleetProvisioningStatus_t status = FleetProvisioningNoMatch;
    const char * pTopicCursor = pRemainingTopic;
    uint16_t cursorLength = remainingLength;

    assert( pRemainingTopic != NULL );

    /* Check if publish topic */
    if( cursorLength == 0U )
    {
        ret = TopicPublish;
        status = FleetProvisioningSuccess;
    }

    /* Check if accepted topic */
    if( status == FleetProvisioningNoMatch )
    {
        status = consumeIfMatch( &pTopicCursor,
                                 &cursorLength,
                                 FP_API_ACCEPTED_SUFFIX,
                                 FP_API_LENGTH_ACCEPTED_SUFFIX );

        if( status == FleetProvisioningSuccess )
        {
            if( cursorLength == 0U )
            {
                ret = TopicAccepted;
            }
            else
            {
                status = FleetProvisioningError;
            }
        }
    }

    /* Check if rejected topic */
    if( status == FleetProvisioningNoMatch )
    {
        status = consumeIfMatch( &pTopicCursor,
                                 &cursorLength,
                                 FP_API_REJECTED_SUFFIX,
                                 FP_API_LENGTH_REJECTED_SUFFIX );

        if( status == FleetProvisioningSuccess )
        {
            if( cursorLength == 0U )
            {
                ret = TopicRejected;
            }
        }
    }

    return ret;
}