From 2263edc8213e588962afcba642f54ddeb2a67e42 Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Tue, 10 Nov 2015 23:17:51 +0000 Subject: [PATCH] Add mutex locks to correct callback --- test/test2.c | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/test/test2.c b/test/test2.c index 8d165f71..93fa9258 100644 --- a/test/test2.c +++ b/test/test2.c @@ -274,6 +274,28 @@ void myassert(char* filename, int lineno, char* description, int value, char* fo } +#if defined(WIN32) || defined(WIN64) +mutex_type deliveryCompleted_mutex = NULL; +#else +pthread_mutex_t deliveryCompleted_mutex_store = PTHREAD_MUTEX_INITIALIZER; +mutex_type deliveryCompleted_mutex = &deliveryCompleted_mutex_store; +#endif + +void lock_mutex(mutex_type amutex) +{ + int rc = Thread_lock_mutex(amutex); + if (rc != 0) + MyLog(LOGA_INFO, "Error %s locking mutex", strerror(rc)); +} + +void unlock_mutex(mutex_type amutex) +{ + int rc = Thread_unlock_mutex(amutex); + if (rc != 0) + MyLog(LOGA_INFO, "Error %s unlocking mutex", strerror(rc)); +} + + /********************************************************************* Test1: multiple threads to single client object @@ -287,7 +309,9 @@ MQTTClient_message test1_pubmsg_check = MQTTClient_message_initializer; void test1_deliveryComplete(void* context, MQTTClient_deliveryToken dt) { + lock_mutex(deliveryCompleted_mutex); ++test1_deliveryCompleted; + unlock_mutex(deliveryCompleted_mutex); } int test1_messageArrived(void* context, char* topicName, int topicLen, MQTTClient_message* m) @@ -498,31 +522,8 @@ volatile int test2_arrivedcount = 0; volatile int test2_deliveryCompleted = 0; -#if defined(WIN32) || defined(WIN64) -mutex_type deliveryCompleted_mutex = NULL; -#else -pthread_mutex_t deliveryCompleted_mutex_store = PTHREAD_MUTEX_INITIALIZER; -mutex_type deliveryCompleted_mutex = &deliveryCompleted_mutex_store; -#endif - MQTTClient_message test2_pubmsg = MQTTClient_message_initializer; -void lock_mutex(mutex_type amutex) -{ - int rc = Thread_lock_mutex(amutex); - if (rc != 0) - MyLog(LOGA_INFO, "Error %s locking mutex", strerror(rc)); -} - - -void unlock_mutex(mutex_type amutex) -{ - int rc = Thread_unlock_mutex(amutex); - if (rc != 0) - MyLog(LOGA_INFO, "Error %s unlocking mutex", strerror(rc)); -} - - void test2_deliveryComplete(void* context, MQTTClient_deliveryToken dt) { lock_mutex(deliveryCompleted_mutex);