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 2015/10/13 12:17:31 UTC

[1/3] celix git commit: CELIX-237: Added extra test

Repository: celix
Updated Branches:
  refs/heads/feature/CELIX-237_rsa-ffi 119bb9504 -> 8689fc102


CELIX-237: Added extra test


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/6494ec29
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/6494ec29
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/6494ec29

Branch: refs/heads/feature/CELIX-237_rsa-ffi
Commit: 6494ec29b61df6e69cd3608eadc841ab0292e96c
Parents: 119bb95
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Mon Oct 12 12:04:36 2015 +0200
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Mon Oct 12 12:04:36 2015 +0200

----------------------------------------------------------------------
 launcher/private/src/main.c                                 | 9 ++++++++-
 .../dynamic_function_interface_tst/dyn_type_tests.cpp       | 5 +++--
 2 files changed, 11 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/6494ec29/launcher/private/src/main.c
----------------------------------------------------------------------
diff --git a/launcher/private/src/main.c b/launcher/private/src/main.c
index ec72d03..8998e44 100644
--- a/launcher/private/src/main.c
+++ b/launcher/private/src/main.c
@@ -32,6 +32,7 @@
 
 static void show_usage(char* prog_name);
 static void shutdown_framework(int signal);
+static void ignore(int signal);
 
 #define DEFAULT_CONFIG_FILE "config.properties"
 
@@ -62,6 +63,8 @@ int main(int argc, char *argv[]) {
 
     // Set signal handler
     (void) signal(SIGINT, shutdown_framework);
+    (void) signal(SIGUSR1, ignore);
+    (void) signal(SIGUSR2, ignore);
 
     int rc = celixLauncher_launch(config_file, &framework);
     if (rc == 0) {
@@ -78,4 +81,8 @@ static void shutdown_framework(int signal) {
     if (framework != NULL) {
         celixLauncher_stop(framework); //NOTE main thread will destroy
     }
-}
\ No newline at end of file
+}
+
+static void ignore(int signal) {
+    //ignoring for signal SIGUSR1, SIGUSR2. Can be used on threads
+}

http://git-wip-us.apache.org/repos/asf/celix/blob/6494ec29/remote_services/remote_service_admin_dfi/dynamic_function_interface_tst/dyn_type_tests.cpp
----------------------------------------------------------------------
diff --git a/remote_services/remote_service_admin_dfi/dynamic_function_interface_tst/dyn_type_tests.cpp b/remote_services/remote_service_admin_dfi/dynamic_function_interface_tst/dyn_type_tests.cpp
index 57db391..e2fe950 100644
--- a/remote_services/remote_service_admin_dfi/dynamic_function_interface_tst/dyn_type_tests.cpp
+++ b/remote_services/remote_service_admin_dfi/dynamic_function_interface_tst/dyn_type_tests.cpp
@@ -5,7 +5,6 @@
 #include "CppUTest/CommandLineTestRunner.h"                                                                                                                                                                        
 
 extern "C" {
-    #include <string.h>
     #include <stdarg.h>
     
     #include "dyn_common.h"
@@ -44,7 +43,7 @@ extern "C" {
         }
 
         FILE *stream = fopen("/dev/null", "w");
-        dynType_print(type, stream);
+        dynType_print(type, stdout);
         fclose(stream);
         dynType_destroy(type);
         //printf("--\n\n");
@@ -72,6 +71,7 @@ TEST_GROUP(DynTypeTests) {
 #define EX13 "Ttype={DDDDD a b c d e};{ltype;Ltype;ltype;Ltype; byVal1 byRef1 byVal2 ByRef2}" 
 #define EX14 "{DD{FF{JJ}{II*{ss}}}}"  //unnamed fields
 #define EX15 "Tsample={jDD time val1 val2};Tresult={jDlsample; time result sample};Lresult;"
+#define EX16 "Tpoi={BDD id lat lon};Lpoi;"
 
 #define CREATE_EXAMPLES_TEST(DESC) \
     TEST(DynTypeTests, ParseTestExample ## DESC) { \
@@ -93,6 +93,7 @@ CREATE_EXAMPLES_TEST(EX12)
 CREATE_EXAMPLES_TEST(EX13)
 CREATE_EXAMPLES_TEST(EX14)
 CREATE_EXAMPLES_TEST(EX15)
+CREATE_EXAMPLES_TEST(EX16)
 
 TEST(DynTypeTests, ParseRandomGarbageTest) {
     /*


[2/3] celix git commit: CELIX-237: Added locking and some clearup

Posted by pn...@apache.org.
CELIX-237: Added locking and some clearup


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/c66eb887
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/c66eb887
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/c66eb887

Branch: refs/heads/feature/CELIX-237_rsa-ffi
Commit: c66eb88753e001fefe007e57325777f8dd8fc4db
Parents: 6494ec2
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Tue Oct 13 11:38:00 2015 +0200
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Tue Oct 13 12:16:38 2015 +0200

----------------------------------------------------------------------
 .../rsa/private/src/import_registration_dfi.c   | 42 +++++++++++++++-----
 1 file changed, 33 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/c66eb887/remote_services/remote_service_admin_dfi/rsa/private/src/import_registration_dfi.c
----------------------------------------------------------------------
diff --git a/remote_services/remote_service_admin_dfi/rsa/private/src/import_registration_dfi.c b/remote_services/remote_service_admin_dfi/rsa/private/src/import_registration_dfi.c
index 3ba20e7..f0530b0 100644
--- a/remote_services/remote_service_admin_dfi/rsa/private/src/import_registration_dfi.c
+++ b/remote_services/remote_service_admin_dfi/rsa/private/src/import_registration_dfi.c
@@ -1,6 +1,7 @@
 #include <stdlib.h>
 #include <jansson.h>
 #include <json_rpc.h>
+#include <assert.h>
 #include "json_serializer.h"
 #include "dyn_interface.h"
 #include "import_registration.h"
@@ -20,6 +21,7 @@ struct import_registration {
     service_registration_pt factoryReg;
 
     hash_map_pt proxies; //key -> bundle, value -> service_proxy
+    celix_thread_mutex_t proxiesMutex; //protects proxies
 };
 
 struct service_proxy {
@@ -32,6 +34,7 @@ static celix_status_t importRegistration_createProxy(import_registration_pt impo
                                               struct service_proxy **proxy);
 static void importRegistration_proxyFunc(void *userData, void *args[], void *returnVal);
 static void importRegistration_destroyProxy(struct service_proxy *proxy);
+static void importRegistration_clearProxies(import_registration_pt import);
 
 celix_status_t importRegistration_create(bundle_context_pt context, endpoint_description_pt endpoint, const char *classObject,
                                          import_registration_pt *out) {
@@ -47,7 +50,9 @@ celix_status_t importRegistration_create(bundle_context_pt context, endpoint_des
         reg->endpoint = endpoint;
         reg->classObject = classObject;
         reg->proxies = hashMap_create(NULL, NULL, NULL, NULL);
+
         celixThreadMutex_create(&reg->mutex, NULL);
+        celixThreadMutex_create(&reg->proxiesMutex, NULL);
 
         reg->factory->factory = reg;
         reg->factory->getService = (void *)importRegistration_getService;
@@ -76,18 +81,32 @@ celix_status_t importRegistration_setSendFn(import_registration_pt reg,
     return CELIX_SUCCESS;
 }
 
-void importRegistration_destroy(import_registration_pt import) {
+static void importRegistration_clearProxies(import_registration_pt import) {
     if (import != NULL) {
+        pthread_mutex_lock(&import->proxiesMutex);
         if (import->proxies != NULL) {
-            hash_map_iterator_pt  iter = hashMapIterator_create(import->proxies);
+            hash_map_iterator_pt iter = hashMapIterator_create(import->proxies);
             while (hashMapIterator_hasNext(iter)) {
                 struct service_proxy *proxy = hashMapIterator_nextEntry(iter);
                 importRegistration_destroyProxy(proxy);
             }
             hashMapIterator_destroy(iter);
+        }
+        pthread_mutex_unlock(&import->proxiesMutex);
+    }
+}
+
+void importRegistration_destroy(import_registration_pt import) {
+    if (import != NULL) {
+        if (import->proxies != NULL) {
+            importRegistration_clearProxies(import);
             hashMap_destroy(import->proxies, false, false);
             import->proxies = NULL;
         }
+
+        pthread_mutex_destroy(&import->mutex);
+        pthread_mutex_destroy(&import->proxiesMutex);
+
         if (import->factory != NULL) {
             free(import->factory);
         }
@@ -110,7 +129,9 @@ celix_status_t importRegistration_stop(import_registration_pt import) {
     if (import->factoryReg != NULL) {
         serviceRegistration_unregister(import->factoryReg);
     }
-    //TODO unregister every serv instance? Needed for factory?
+
+    importRegistration_clearProxies(import);
+
     return status;
 }
 
@@ -127,11 +148,12 @@ celix_status_t importRegistration_getService(import_registration_pt import, bund
      */
 
 
-    struct service_proxy *proxy = hashMap_get(import->proxies, bundle); //TODO lock
+    pthread_mutex_lock(&import->proxiesMutex);
+    struct service_proxy *proxy = hashMap_get(import->proxies, bundle);
     if (proxy == NULL) {
         status = importRegistration_createProxy(import, bundle, &proxy);
         if (status == CELIX_SUCCESS) {
-            hashMap_put(import->proxies, bundle, proxy); //TODO lock
+            hashMap_put(import->proxies, bundle, proxy);
         }
     }
 
@@ -139,6 +161,7 @@ celix_status_t importRegistration_getService(import_registration_pt import, bund
         proxy->count += 1;
         *out = proxy->service;
     }
+    pthread_mutex_unlock(&import->proxiesMutex);
 
     return status;
 }
@@ -263,13 +286,13 @@ static void importRegistration_proxyFunc(void *userData, void *args[], void *ret
 
 celix_status_t importRegistration_ungetService(import_registration_pt import, bundle_pt bundle, service_registration_pt registration, void **out) {
     celix_status_t  status = CELIX_SUCCESS;
-    return status;
 
-    /* TODO fix. gives segfault in framework shutdown (import->proxies == NULL)
     assert(import != NULL);
     assert(import->proxies != NULL);
 
-    struct service_proxy *proxy = hashMap_get(import->proxies, bundle); //TODO lock
+    pthread_mutex_lock(&import->proxiesMutex);
+
+    struct service_proxy *proxy = hashMap_get(import->proxies, bundle);
     if (proxy != NULL) {
         if (*out == proxy->service) {
             proxy->count -= 1;
@@ -281,7 +304,8 @@ celix_status_t importRegistration_ungetService(import_registration_pt import, bu
             importRegistration_destroyProxy(proxy);
         }
     }
-     */
+
+    pthread_mutex_lock(&import->proxiesMutex);
 
     return status;
 }


[3/3] celix git commit: CELIX-237: Only enabling error logging for the dfi lib

Posted by pn...@apache.org.
CELIX-237: Only enabling error logging for the dfi lib


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/8689fc10
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/8689fc10
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/8689fc10

Branch: refs/heads/feature/CELIX-237_rsa-ffi
Commit: 8689fc1021932c7baaf9f6bc3d613af97d17c3b0
Parents: c66eb88
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Tue Oct 13 12:00:48 2015 +0200
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Tue Oct 13 12:16:50 2015 +0200

----------------------------------------------------------------------
 .../rsa/private/src/remote_service_admin_dfi.c            | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/8689fc10/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c
----------------------------------------------------------------------
diff --git a/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c b/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c
index 9ea470b..4bd8c58 100644
--- a/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c
+++ b/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c
@@ -135,11 +135,11 @@ celix_status_t remoteServiceAdmin_create(bundle_context_pt context, remote_servi
 
         if (logHelper_create(context, &(*admin)->loghelper) == CELIX_SUCCESS) {
             logHelper_start((*admin)->loghelper);
-            dynCommon_logSetup((void *)remoteServiceAdmin_log, *admin, 4);
-            dynType_logSetup((void *)remoteServiceAdmin_log, *admin, 4);
-            dynFunction_logSetup((void *)remoteServiceAdmin_log, *admin, 4);
-            dynInterface_logSetup((void *)remoteServiceAdmin_log, *admin, 4);
-            jsonSerializer_logSetup((void *)remoteServiceAdmin_log, *admin, 4);
+            dynCommon_logSetup((void *)remoteServiceAdmin_log, *admin, 1);
+            dynType_logSetup((void *)remoteServiceAdmin_log, *admin, 1);
+            dynFunction_logSetup((void *)remoteServiceAdmin_log, *admin, 1);
+            dynInterface_logSetup((void *)remoteServiceAdmin_log, *admin, 1);
+            jsonSerializer_logSetup((void *)remoteServiceAdmin_log, *admin, 1);
         }
 
         bundleContext_getProperty(context, "RSA_PORT", &port);