in source/defender.c [326:378]
static DefenderStatus_t matchApi( const char * pRemainingTopic,
uint16_t remainingTopicLength,
DefenderTopic_t * pOutApi )
{
DefenderStatus_t ret = DefenderNoMatch;
uint16_t i = 0U;
/* Table of defender APIs. */
static const DefenderTopic_t defenderApi[] =
{
DefenderJsonReportPublish,
DefenderJsonReportAccepted,
DefenderJsonReportRejected,
DefenderCborReportPublish,
DefenderCborReportAccepted,
DefenderCborReportRejected,
};
/* Table of topic API strings in the same order as the above defenderApi table. */
static const char * const defenderApiTopic[] =
{
DEFENDER_API_JSON_FORMAT,
DEFENDER_API_JSON_FORMAT DEFENDER_API_ACCEPTED_SUFFIX,
DEFENDER_API_JSON_FORMAT DEFENDER_API_REJECTED_SUFFIX,
DEFENDER_API_CBOR_FORMAT,
DEFENDER_API_CBOR_FORMAT DEFENDER_API_ACCEPTED_SUFFIX,
DEFENDER_API_CBOR_FORMAT DEFENDER_API_REJECTED_SUFFIX,
};
/* Table of topic API string lengths in the same order as the above defenderApi table. */
static const uint16_t defenderApiTopicLength[] =
{
DEFENDER_API_LENGTH_JSON_FORMAT,
DEFENDER_API_LENGTH_JSON_FORMAT + DEFENDER_API_LENGTH_ACCEPTED_SUFFIX,
DEFENDER_API_LENGTH_JSON_FORMAT + DEFENDER_API_LENGTH_REJECTED_SUFFIX,
DEFENDER_API_LENGTH_CBOR_FORMAT,
DEFENDER_API_LENGTH_CBOR_FORMAT + DEFENDER_API_LENGTH_ACCEPTED_SUFFIX,
DEFENDER_API_LENGTH_CBOR_FORMAT + DEFENDER_API_LENGTH_REJECTED_SUFFIX,
};
for( i = 0U; i < sizeof( defenderApi ) / sizeof( defenderApi[ 0 ] ); i++ )
{
if( ( remainingTopicLength == defenderApiTopicLength[ i ] ) &&
( strncmp( pRemainingTopic,
defenderApiTopic[ i ],
( size_t ) defenderApiTopicLength[ i ] ) == 0 ) )
{
*pOutApi = defenderApi[ i ];
ret = DefenderSuccess;
break;
}
}
return ret;
}