bool SubscriptionManager_HandleIncomingPublishes()

in components/mqtt-subscription-manager/source/mqtt_subscription_manager.c [134:171]


bool SubscriptionManager_HandleIncomingPublishes( SubscriptionElement_t * pxSubscriptionList,
                                                  MQTTPublishInfo_t * pxPublishInfo )
{
    int32_t lIndex = 0;
    bool isMatched = false, publishHandled = false;

    if( ( pxSubscriptionList == NULL ) ||
        ( pxPublishInfo == NULL ) )
    {
        LogError( ( "Invalid parameter. pxSubscriptionList=%p, pxPublishInfo=%p,",
                    pxSubscriptionList,
                    pxPublishInfo ) );
    }
    else
    {
        for( lIndex = 0; lIndex < SUBSCRIPTION_MANAGER_MAX_SUBSCRIPTIONS; lIndex++ )
        {
            if( pxSubscriptionList[ lIndex ].usFilterStringLength > 0 )
            {
                MQTT_MatchTopic( pxPublishInfo->pTopicName,
                                 pxPublishInfo->topicNameLength,
                                 pxSubscriptionList[ lIndex ].pcSubscriptionFilterString,
                                 pxSubscriptionList[ lIndex ].usFilterStringLength,
                                 &isMatched );

                if( isMatched == true )
                {
                    pxSubscriptionList[ lIndex ].pxIncomingPublishCallback( pxSubscriptionList[ lIndex ].pvIncomingPublishCallbackContext,
                                                                            pxPublishInfo );

                    publishHandled = true;
                }
            }
        }
    }

    return publishHandled;
}