Author: abroekhuis
Date: Mon May 30 06:34:09 2011
New Revision: 1129004

URL: http://svn.apache.org/viewvc?rev=1129004&view=rev
Log:
Removed global vars from the framework. Now located in the FRAMEWORK struct

Modified:
    incubator/celix/trunk/framework/private/include/framework.h
    incubator/celix/trunk/framework/private/include/headers.h
    incubator/celix/trunk/framework/private/include/service_registry.h
    incubator/celix/trunk/framework/private/src/bundle_context.c
    incubator/celix/trunk/framework/private/src/framework.c
    incubator/celix/trunk/framework/private/src/service_registry.c
    incubator/celix/trunk/launcher/launcher.c

Modified: incubator/celix/trunk/framework/private/include/framework.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/framework.h?rev=1129004&r1=1129003&r2=1129004&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/framework.h (original)
+++ incubator/celix/trunk/framework/private/include/framework.h Mon May 30 
06:34:09 2011
@@ -53,9 +53,9 @@ celix_status_t fw_getServiceReferences(F
 void * fw_getService(FRAMEWORK framework, BUNDLE bundle, SERVICE_REFERENCE 
reference);
 bool framework_ungetService(FRAMEWORK framework, BUNDLE bundle, 
SERVICE_REFERENCE reference);
 
-void fw_addServiceListener(BUNDLE bundle, SERVICE_LISTENER listener, char * 
filter);
-void fw_removeServiceListener(BUNDLE bundle, SERVICE_LISTENER listener);
-void fw_serviceChanged(SERVICE_EVENT event, PROPERTIES oldprops);
+void fw_addServiceListener(FRAMEWORK framework, BUNDLE bundle, 
SERVICE_LISTENER listener, char * filter);
+void fw_removeServiceListener(FRAMEWORK framework, BUNDLE bundle, 
SERVICE_LISTENER listener);
+void fw_serviceChanged(FRAMEWORK framework, SERVICE_EVENT event, PROPERTIES 
oldprops);
 
 //BUNDLE_ARCHIVE fw_createArchive(long id, char * location);
 //void revise(BUNDLE_ARCHIVE archive, char * location);

Modified: incubator/celix/trunk/framework/private/include/headers.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/headers.h?rev=1129004&r1=1129003&r2=1129004&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/headers.h (original)
+++ incubator/celix/trunk/framework/private/include/headers.h Mon May 30 
06:34:09 2011
@@ -57,6 +57,9 @@
 struct framework {
        struct bundle * bundle;
        HASH_MAP installedBundleMap;
+       HASH_MAP installRequestMap;
+       ARRAY_LIST serviceListeners;
+
        long nextBundleId;
        struct serviceRegistry * registry;
        BUNDLE_CACHE cache;
@@ -134,9 +137,10 @@ struct serviceEvent {
 typedef struct serviceEvent * SERVICE_EVENT;
 
 struct serviceRegistry {
+    FRAMEWORK framework;
        HASH_MAP serviceRegistrations;
        HASH_MAP inUseMap;
-       void (*serviceChanged)(SERVICE_EVENT, PROPERTIES);
+       void (*serviceChanged)(FRAMEWORK, SERVICE_EVENT, PROPERTIES);
        long currentServiceId;
 
 

Modified: incubator/celix/trunk/framework/private/include/service_registry.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/service_registry.h?rev=1129004&r1=1129003&r2=1129004&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/include/service_registry.h 
(original)
+++ incubator/celix/trunk/framework/private/include/service_registry.h Mon May 
30 06:34:09 2011
@@ -32,7 +32,7 @@
 #include "properties.h"
 #include "filter.h"
 
-SERVICE_REGISTRY serviceRegistry_create(void (*serviceChanged)(SERVICE_EVENT, 
PROPERTIES));
+SERVICE_REGISTRY serviceRegistry_create(FRAMEWORK framework, void 
(*serviceChanged)(FRAMEWORK, SERVICE_EVENT, PROPERTIES));
 ARRAY_LIST serviceRegistry_getRegisteredServices(SERVICE_REGISTRY registry, 
BUNDLE bundle);
 SERVICE_REGISTRATION serviceRegistry_registerService(SERVICE_REGISTRY 
registry, BUNDLE bundle, char * serviceName, void * serviceObject, PROPERTIES 
dictionary);
 void serviceRegistry_unregisterService(SERVICE_REGISTRY registry, BUNDLE 
bundle, SERVICE_REGISTRATION registration);

Modified: incubator/celix/trunk/framework/private/src/bundle_context.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_context.c?rev=1129004&r1=1129003&r2=1129004&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_context.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_context.c Mon May 30 
06:34:09 2011
@@ -235,7 +235,7 @@ celix_status_t bundleContext_addServiceL
     celix_status_t status = CELIX_SUCCESS;
 
     if (context != NULL && listener != NULL) {
-        fw_addServiceListener(context->bundle, listener, filter);
+        fw_addServiceListener(context->framework, context->bundle, listener, 
filter);
     } else {
         status = CELIX_ILLEGAL_ARGUMENT;
     }
@@ -247,7 +247,7 @@ celix_status_t bundleContext_removeServi
     celix_status_t status = CELIX_SUCCESS;
 
     if (context != NULL && listener != NULL) {
-        fw_removeServiceListener(context->bundle, listener);
+        fw_removeServiceListener(context->framework, context->bundle, 
listener);
     } else {
         status = CELIX_ILLEGAL_ARGUMENT;
     }

Modified: incubator/celix/trunk/framework/private/src/framework.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/framework.c?rev=1129004&r1=1129003&r2=1129004&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/framework.c (original)
+++ incubator/celix/trunk/framework/private/src/framework.c Mon May 30 06:34:09 
2011
@@ -58,10 +58,6 @@ struct activator {
        void (*destroy)(void * userData, BUNDLE_CONTEXT context);
 };
 
-ARRAY_LIST m_serviceListeners;
-
-HASH_MAP m_installRequestMap;
-
 celix_status_t framework_setBundleStateAndNotify(FRAMEWORK framework, BUNDLE 
bundle, int state);
 celix_status_t framework_markBundleResolved(FRAMEWORK framework, MODULE 
module);
 
@@ -113,12 +109,6 @@ celix_status_t framework_create(FRAMEWOR
                 if (apr_status != CELIX_SUCCESS) {
                     status = CELIX_FRAMEWORK_EXCEPTION;
                 } else {
-                    (*framework)->bundle = bundle;
-                    (*framework)->bundle->framework = (*framework);
-
-                    (*framework)->installedBundleMap = NULL;
-                    (*framework)->registry = NULL;
-
                     apr_status_t apr_status = 
apr_thread_cond_create(&(*framework)->condition, (*framework)->mp);
                     if (apr_status != APR_SUCCESS) {
                         status = CELIX_FRAMEWORK_EXCEPTION;
@@ -135,6 +125,12 @@ celix_status_t framework_create(FRAMEWOR
                                 if (apr_status != APR_SUCCESS) {
                                     status = CELIX_FRAMEWORK_EXCEPTION;
                                 } else {
+                                    (*framework)->bundle = bundle;
+                                    (*framework)->bundle->framework = 
(*framework);
+
+                                    (*framework)->installedBundleMap = NULL;
+                                    (*framework)->registry = NULL;
+
                                     (*framework)->interrupted = false;
 
                                     (*framework)->globalLockWaitersList = 
arrayList_create();
@@ -143,7 +139,9 @@ celix_status_t framework_create(FRAMEWOR
                                     (*framework)->nextBundleId = 1l;
                                     (*framework)->cache = NULL;
 
-                                    m_installRequestMap = 
hashMap_create(string_hash, string_hash, string_equals, string_equals);
+                                    (*framework)->installRequestMap = 
hashMap_create(string_hash, string_hash, string_equals, string_equals);
+                                    (*framework)->serviceListeners = NULL;
+                                    (*framework)->shutdownGate = NULL;
                                 }
                             }
                         }
@@ -244,7 +242,7 @@ celix_status_t fw_init(FRAMEWORK framewo
             }
         }
         arrayList_destroy(archives);
-        framework->registry = serviceRegistry_create(fw_serviceChanged);
+        framework->registry = serviceRegistry_create(framework, 
fw_serviceChanged);
 
         framework_setBundleStateAndNotify(framework, framework->bundle, 
BUNDLE_STARTING);
 
@@ -289,7 +287,7 @@ celix_status_t fw_init(FRAMEWORK framewo
             start(userData, bundle_getContext(framework->bundle));
         }
 
-        m_serviceListeners = arrayList_create();
+        framework->serviceListeners = arrayList_create();
         framework_releaseBundleLock(framework, framework->bundle);
 
         status = CELIX_SUCCESS;
@@ -900,7 +898,7 @@ bool framework_ungetService(FRAMEWORK fr
        return serviceRegistry_ungetService(framework->registry, bundle, 
reference);
 }
 
-void fw_addServiceListener(BUNDLE bundle, SERVICE_LISTENER listener, char * 
sfilter) {
+void fw_addServiceListener(FRAMEWORK framework, BUNDLE bundle, 
SERVICE_LISTENER listener, char * sfilter) {
        FW_SERVICE_LISTENER fwListener = (FW_SERVICE_LISTENER) 
malloc(sizeof(*fwListener));
        fwListener->bundle = bundle;
        if (sfilter != NULL) {
@@ -908,16 +906,16 @@ void fw_addServiceListener(BUNDLE bundle
                fwListener->filter = filter;
        }
        fwListener->listener = listener;
-       arrayList_add(m_serviceListeners, fwListener);
+       arrayList_add(framework->serviceListeners, fwListener);
 }
 
-void fw_removeServiceListener(BUNDLE bundle, SERVICE_LISTENER listener) {
+void fw_removeServiceListener(FRAMEWORK framework, BUNDLE bundle, 
SERVICE_LISTENER listener) {
        unsigned int i;
        FW_SERVICE_LISTENER element;
-       for (i = 0; i < arrayList_size(m_serviceListeners); i++) {
-               element = (FW_SERVICE_LISTENER) 
arrayList_get(m_serviceListeners, i);
+       for (i = 0; i < arrayList_size(framework->serviceListeners); i++) {
+               element = (FW_SERVICE_LISTENER) 
arrayList_get(framework->serviceListeners, i);
                if (element->listener == listener && element->bundle == bundle) 
{
-                       arrayList_remove(m_serviceListeners, i);
+                       arrayList_remove(framework->serviceListeners, i);
                        i--;
                        element->bundle = NULL;
                        filter_destroy(element->filter);
@@ -930,14 +928,14 @@ void fw_removeServiceListener(BUNDLE bun
        }
 }
 
-void fw_serviceChanged(SERVICE_EVENT event, PROPERTIES oldprops) {
+void fw_serviceChanged(FRAMEWORK framework, SERVICE_EVENT event, PROPERTIES 
oldprops) {
        unsigned int i;
        FW_SERVICE_LISTENER element;
        SERVICE_REGISTRATION registration = event->reference->registration;
-       if (arrayList_size(m_serviceListeners) > 0) {
-               for (i = 0; i < arrayList_size(m_serviceListeners); i++) {
+       if (arrayList_size(framework->serviceListeners) > 0) {
+               for (i = 0; i < arrayList_size(framework->serviceListeners); 
i++) {
                        int matched = 0;
-                       element = (FW_SERVICE_LISTENER) 
arrayList_get(m_serviceListeners, i);
+                       element = (FW_SERVICE_LISTENER) 
arrayList_get(framework->serviceListeners, i);
                        matched = (element->filter == NULL) || 
filter_match(element->filter, registration->properties);
                        if (matched) {
                                
element->listener->serviceChanged(element->listener, event);
@@ -1038,10 +1036,10 @@ BUNDLE framework_getBundleById(FRAMEWORK
 celix_status_t framework_acquireInstallLock(FRAMEWORK framework, char * 
location) {
     apr_thread_mutex_lock(framework->installRequestLock);
 
-       while (hashMap_get(m_installRequestMap, location) != NULL) {
+       while (hashMap_get(framework->installRequestMap, location) != NULL) {
                apr_thread_cond_wait(framework->condition, 
framework->installRequestLock);
        }
-       hashMap_put(m_installRequestMap, location, location);
+       hashMap_put(framework->installRequestMap, location, location);
 
        apr_thread_mutex_unlock(framework->installRequestLock);
 
@@ -1051,7 +1049,7 @@ celix_status_t framework_acquireInstallL
 celix_status_t framework_releaseInstallLock(FRAMEWORK framework, char * 
location) {
     apr_thread_mutex_lock(framework->installRequestLock);
 
-       hashMap_remove(m_installRequestMap, location);
+       hashMap_remove(framework->installRequestMap, location);
        apr_thread_cond_broadcast(framework->condition);
 
        apr_thread_mutex_unlock(framework->installRequestLock);

Modified: incubator/celix/trunk/framework/private/src/service_registry.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/service_registry.c?rev=1129004&r1=1129003&r2=1129004&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/service_registry.c (original)
+++ incubator/celix/trunk/framework/private/src/service_registry.c Mon May 30 
06:34:09 2011
@@ -85,11 +85,12 @@ void serviceRegistry_flushUsageCount(SER
        }
 }
 
-SERVICE_REGISTRY serviceRegistry_create(void (*serviceChanged)(SERVICE_EVENT, 
PROPERTIES)) {
+SERVICE_REGISTRY serviceRegistry_create(FRAMEWORK framework, void 
(*serviceChanged)(FRAMEWORK, SERVICE_EVENT, PROPERTIES)) {
        SERVICE_REGISTRY registry = (SERVICE_REGISTRY) 
malloc(sizeof(*registry));
        registry->serviceChanged = serviceChanged;
        registry->inUseMap = hashMap_create(NULL, NULL, NULL, NULL);
        registry->serviceRegistrations = hashMap_create(NULL, NULL, NULL, NULL);
+       registry->framework = framework;
 
        pthread_mutexattr_t mutexattr;
        pthread_mutexattr_init(&mutexattr);
@@ -135,7 +136,7 @@ SERVICE_REGISTRATION serviceRegistry_reg
                SERVICE_EVENT event = (SERVICE_EVENT) malloc(sizeof(*event));
                event->type = REGISTERED;
                event->reference = reg->reference;
-               registry->serviceChanged(event, NULL);
+               registry->serviceChanged(registry->framework, event, NULL);
                free(event);
                event = NULL;
        }
@@ -158,7 +159,7 @@ void serviceRegistry_unregisterService(S
                SERVICE_EVENT event = (SERVICE_EVENT) malloc(sizeof(*event));
                event->type = UNREGISTERING;
                event->reference = registration->reference;
-               registry->serviceChanged(event, NULL);
+               registry->serviceChanged(registry->framework, event, NULL);
                free(event);
        }
 

Modified: incubator/celix/trunk/launcher/launcher.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/launcher/launcher.c?rev=1129004&r1=1129003&r2=1129004&view=diff
==============================================================================
--- incubator/celix/trunk/launcher/launcher.c (original)
+++ incubator/celix/trunk/launcher/launcher.c Mon May 30 06:34:09 2011
@@ -69,7 +69,6 @@ int main(void) {
        linkedList_addElement(bundles, location);
        result = strtok(NULL, delims);
     }
-    // Update according to Felix Main
     // First install all bundles
     // Afterwards start them
     ARRAY_LIST installed = arrayList_create();


Reply via email to