You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2024/01/04 13:27:01 UTC

(celix) 04/05: Refactor endpointDiscoveryPoller_poll for indent and error handling

This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a commit to branch feature/509-remove-cpputests
in repository https://gitbox.apache.org/repos/asf/celix.git

commit cd8bfd54d6ca8cd022d98907d3750f7ae6e4e093
Author: Pepijn Noltes <pn...@apache.org>
AuthorDate: Thu Jan 4 14:26:20 2024 +0100

    Refactor endpointDiscoveryPoller_poll for indent and error handling
---
 .../include/endpoint_discovery_poller.h            |   1 +
 .../src/endpoint_discovery_poller.c                | 103 ++++++++++-----------
 2 files changed, 50 insertions(+), 54 deletions(-)

diff --git a/bundles/remote_services/discovery_common/include/endpoint_discovery_poller.h b/bundles/remote_services/discovery_common/include/endpoint_discovery_poller.h
index a500b714..4b9178f3 100644
--- a/bundles/remote_services/discovery_common/include/endpoint_discovery_poller.h
+++ b/bundles/remote_services/discovery_common/include/endpoint_discovery_poller.h
@@ -32,6 +32,7 @@
 #include "celix_log_helper.h"
 #include "celix_threads.h"
 #include "hash_map.h"
+#include "celix_array_list.h"
 
 typedef struct endpoint_discovery_poller endpoint_discovery_poller_t;
 
diff --git a/bundles/remote_services/discovery_common/src/endpoint_discovery_poller.c b/bundles/remote_services/discovery_common/src/endpoint_discovery_poller.c
index c286d43e..edf560fc 100644
--- a/bundles/remote_services/discovery_common/src/endpoint_discovery_poller.c
+++ b/bundles/remote_services/discovery_common/src/endpoint_discovery_poller.c
@@ -252,89 +252,84 @@ celix_status_t endpointDiscoveryPoller_removeDiscoveryEndpoint(endpoint_discover
 
 celix_status_t
 endpointDiscoveryPoller_poll(endpoint_discovery_poller_t* poller, char* url, celix_array_list_t* currentEndpoints) {
-    celix_status_t status;
-    celix_array_list_t* updatedEndpoints = NULL;
-
     // create an arraylist with a custom equality test to ensure we can find endpoints properly...
-    updatedEndpoints = celix_arrayList_createWithEquals(endpointDiscoveryPoller_endpointDescriptionEquals);
-    status = endpointDiscoveryPoller_getEndpoints(poller, url, &updatedEndpoints);
+    celix_array_list_t* updatedEndpoints = celix_arrayList_createWithEquals(endpointDiscoveryPoller_endpointDescriptionEquals);
+    if (!updatedEndpoints) {
+        return CELIX_ENOMEM;
+    }
 
-    if (updatedEndpoints && status == CELIX_SUCCESS) {
-        if (updatedEndpoints != NULL) {
-            for (int i = celix_arrayList_size(currentEndpoints); i > 0; i--) {
-                endpoint_description_t* endpoint = celix_arrayList_get(currentEndpoints, i - 1);
+    celix_status_t status = endpointDiscoveryPoller_getEndpoints(poller, url, &updatedEndpoints);
+    if (status == CELIX_SUCCESS) {
+        for (int i = celix_arrayList_size(currentEndpoints); i > 0; i--) {
+            endpoint_description_t* endpoint = celix_arrayList_get(currentEndpoints, i - 1);
 
-                celix_array_list_entry_t entry;
-                memset(&entry, 0, sizeof(entry));
-                entry.voidPtrVal = endpoint;
+            celix_array_list_entry_t entry;
+            memset(&entry, 0, sizeof(entry));
+            entry.voidPtrVal = endpoint;
 
-                if (celix_arrayList_indexOf(updatedEndpoints, entry) < 0) {
-                    status = discovery_removeDiscoveredEndpoint(poller->discovery, endpoint);
-                    celix_arrayList_removeAt(currentEndpoints, i - 1);
-                    endpointDescription_destroy(endpoint);
-                }
+            if (celix_arrayList_indexOf(updatedEndpoints, entry) < 0) {
+                status = discovery_removeDiscoveredEndpoint(poller->discovery, endpoint);
+                celix_arrayList_removeAt(currentEndpoints, i - 1);
+                endpointDescription_destroy(endpoint);
             }
+        }
 
-            for (int i = 0; i < celix_arrayList_size(updatedEndpoints); i++) {
-                endpoint_description_t* endpoint = celix_arrayList_get(updatedEndpoints, i);
-                celix_array_list_entry_t entry;
-                memset(&entry, 0, sizeof(entry));
-                entry.voidPtrVal = endpoint;
-                if (celix_arrayList_indexOf(currentEndpoints, entry) < 0) {
-                    celix_arrayList_add(currentEndpoints, endpoint);
-                    status = discovery_addDiscoveredEndpoint(poller->discovery, endpoint);
-                } else {
-                    endpointDescription_destroy(endpoint);
-                }
+        for (int i = 0; i < celix_arrayList_size(updatedEndpoints); i++) {
+            endpoint_description_t* endpoint = celix_arrayList_get(updatedEndpoints, i);
+            celix_array_list_entry_t entry;
+            memset(&entry, 0, sizeof(entry));
+            entry.voidPtrVal = endpoint;
+            if (celix_arrayList_indexOf(currentEndpoints, entry) < 0) {
+                celix_arrayList_add(currentEndpoints, endpoint);
+                status = discovery_addDiscoveredEndpoint(poller->discovery, endpoint);
+            } else {
+                endpointDescription_destroy(endpoint);
             }
-            celix_arrayList_clear(updatedEndpoints);
         }
     }
 
-    if (updatedEndpoints != NULL) {
+    if (updatedEndpoints) {
         celix_arrayList_destroy(updatedEndpoints);
     }
 
     return status;
 }
 
-static void *endpointDiscoveryPoller_performPeriodicPoll(void *data) {
-	endpoint_discovery_poller_t *poller = (endpoint_discovery_poller_t *) data;
+static void* endpointDiscoveryPoller_performPeriodicPoll(void* data) {
+    endpoint_discovery_poller_t* poller = (endpoint_discovery_poller_t*)data;
 
-	useconds_t interval = (useconds_t) (poller->poll_interval * 1000000L);
+    useconds_t interval = (useconds_t)(poller->poll_interval * 1000000L);
 
-	while (poller->running) {
-		usleep(interval);
-		celix_status_t status = celixThreadMutex_lock(&poller->pollerLock);
+    while (poller->running) {
+        usleep(interval);
+        celix_status_t status = celixThreadMutex_lock(&poller->pollerLock);
 
-		if (status != CELIX_SUCCESS) {
+        if (status != CELIX_SUCCESS) {
             celix_logHelper_warning(*poller->loghelper, "ENDPOINT_POLLER: failed to obtain lock; retrying...");
-		} else {
-			hash_map_iterator_pt iterator = hashMapIterator_create(poller->entries);
+        } else {
+            hash_map_iterator_pt iterator = hashMapIterator_create(poller->entries);
 
-			while (hashMapIterator_hasNext(iterator)) {
-				hash_map_entry_pt entry = hashMapIterator_nextEntry(iterator);
+            while (hashMapIterator_hasNext(iterator)) {
+                hash_map_entry_pt entry = hashMapIterator_nextEntry(iterator);
 
-				char *url = hashMapEntry_getKey(entry);
-                                celix_array_list_t* currentEndpoints = hashMapEntry_getValue(entry);
+                char* url = hashMapEntry_getKey(entry);
+                celix_array_list_t* currentEndpoints = hashMapEntry_getValue(entry);
 
-				endpointDiscoveryPoller_poll(poller, url, currentEndpoints);
-			}
+                endpointDiscoveryPoller_poll(poller, url, currentEndpoints);
+            }
 
-			hashMapIterator_destroy(iterator);
-		}
+            hashMapIterator_destroy(iterator);
+        }
 
-		status = celixThreadMutex_unlock(&poller->pollerLock);
-		if (status != CELIX_SUCCESS) {
+        status = celixThreadMutex_unlock(&poller->pollerLock);
+        if (status != CELIX_SUCCESS) {
             celix_logHelper_warning(*poller->loghelper, "ENDPOINT_POLLER: failed to release lock; retrying...");
-		}
-	}
+        }
+    }
 
-	return NULL;
+    return NULL;
 }
 
-
-
 struct MemoryStruct {
 	char *memory;
 	size_t size;