From edaed793a0b5a2eca412fc4f86e6c7fad48966d9 Mon Sep 17 00:00:00 2001 From: Reuben Cartwright Date: Mon, 5 Aug 2024 14:29:42 +0100 Subject: [PATCH] coremqtt-agent: Improve subscription_manager.c Previously, removeSubscription did not produce any output, nor return a value if it failed to remove a subscription (e.g. if the subscription did not exist). This commit makes removeSubscription return true if successful, and false otherwise. This commit also documents this change. Signed-off-by: Reuben Cartwright --- .../coremqtt_agent/integration/inc/subscription_manager.h | 5 ++++- .../coremqtt_agent/integration/src/subscription_manager.c | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/components/aws_iot/coremqtt_agent/integration/inc/subscription_manager.h b/components/aws_iot/coremqtt_agent/integration/inc/subscription_manager.h index 5fd3d661..f16ef1a3 100644 --- a/components/aws_iot/coremqtt_agent/integration/inc/subscription_manager.h +++ b/components/aws_iot/coremqtt_agent/integration/inc/subscription_manager.h @@ -99,8 +99,11 @@ bool addSubscription( const char * pcTopicFilterString, * @param[in] pxSubscriptionList The pointer to the subscription list array. * @param[in] pcTopicFilterString Topic filter of subscription. * @param[in] usTopicFilterLength Length of topic filter. + * + * @return `true` if subscription has been removed, `false` if the subscription + * does not exist or deletion failed. */ -void removeSubscription( const char * pcTopicFilterString, +bool removeSubscription( const char * pcTopicFilterString, uint16_t usTopicFilterLength ); /** diff --git a/components/aws_iot/coremqtt_agent/integration/src/subscription_manager.c b/components/aws_iot/coremqtt_agent/integration/src/subscription_manager.c index 9daac2df..b0626b4a 100644 --- a/components/aws_iot/coremqtt_agent/integration/src/subscription_manager.c +++ b/components/aws_iot/coremqtt_agent/integration/src/subscription_manager.c @@ -121,9 +121,11 @@ bool addSubscription( const char * pcTopicFilterString, /*-----------------------------------------------------------*/ -void removeSubscription( const char * pcTopicFilterString, +bool removeSubscription( const char * pcTopicFilterString, uint16_t usTopicFilterLength ) { + bool found = false; + if( ( pcTopicFilterString == NULL ) || ( usTopicFilterLength == 0U ) ) { @@ -142,11 +144,14 @@ void removeSubscription( const char * pcTopicFilterString, { if( strncmp( xGlobalSubscriptionList[ lIndex ].pcSubscriptionFilterString, pcTopicFilterString, usTopicFilterLength ) == 0 ) { + found = true; memset( &( xGlobalSubscriptionList[ lIndex ] ), 0x00, sizeof( SubscriptionElement_t ) ); } } } } + + return found; } /*-----------------------------------------------------------*/