From 17d1aeda18046f2b7225075d121ed54605a5adb9 Mon Sep 17 00:00:00 2001 From: Sreeharsha Ramanavarapu Date: Fri, 8 Jan 2021 09:59:17 +0530 Subject: dlt_client_main_loop running in an infinite loop restricts graceful exit of DLT Client code (#284) Issue: ------ dlt_client_main_loop currently uses an infinite loop ("while (1)"). This creates problems when a DLT client is running in a thread as part of a larger application. Graceful exit (for example: during object destruction) is not possible because a thread is running dlt_client_main_loop in the background. It is also not possible to exit the client, if we want it to fetch only a pre-decided number of messages. Solution: --------- Allow user to define a callback function to check whether the next message should be fetched. dlt-test-client.c has a new option to fetch a pre-decided number of messages, after which the client will exit. Signed-off-by: Sreeharsha Ramanavarapu --- include/dlt/dlt_client.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include') diff --git a/include/dlt/dlt_client.h b/include/dlt/dlt_client.h index f649b83..77f0cee 100644 --- a/include/dlt/dlt_client.h +++ b/include/dlt/dlt_client.h @@ -75,6 +75,7 @@ # include "dlt_types.h" # include "dlt_common.h" +#include typedef enum { @@ -104,6 +105,7 @@ extern "C" { # endif void dlt_client_register_message_callback(int (*registerd_callback)(DltMessage *message, void *data)); +void dlt_client_register_fetch_next_message_callback(bool (*registerd_callback)(void *data)); /** * Initialising dlt client structure with a specific port -- cgit v1.2.1