You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by ab...@apache.org on 2012/01/25 13:27:32 UTC
svn commit: r1235725 - in /incubator/celix/trunk: ./ dependency_manager/
examples/echo_service/client/
examples/osgi-in-action/chapter04-paint-example/paint/private/src/
examples/whiteboard/tracker/ framework/ framework/private/src/
framework/public/in...
Author: abroekhuis
Date: Wed Jan 25 12:27:31 2012
New Revision: 1235725
URL: http://svn.apache.org/viewvc?rev=1235725&view=rev
Log:
Refactor service tracker
Refactored service tracker to use memory pools
Modified:
incubator/celix/trunk/WB Dependency Manager.launch
incubator/celix/trunk/dependency_manager/service_dependency.c
incubator/celix/trunk/examples/echo_service/client/echo_client_activator.c
incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c
incubator/celix/trunk/examples/whiteboard/tracker/activator.c
incubator/celix/trunk/framework/CMakeLists.txt
incubator/celix/trunk/framework/private/src/bundle_context.c
incubator/celix/trunk/framework/private/src/filter.c
incubator/celix/trunk/framework/private/src/service_tracker.c
incubator/celix/trunk/framework/public/include/service_tracker.h
incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c
incubator/celix/trunk/remote_services/remote_service_admin/private/src/export_registration_impl.c
incubator/celix/trunk/remote_services/remote_service_admin/private/src/import_registration_impl.c
incubator/celix/trunk/remote_services/topology_manager/private/src/activator.c
incubator/celix/trunk/target.cmake
Modified: incubator/celix/trunk/WB Dependency Manager.launch
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/WB%20Dependency%20Manager.launch?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/WB Dependency Manager.launch (original)
+++ incubator/celix/trunk/WB Dependency Manager.launch Wed Jan 25 12:27:31 2012
@@ -20,7 +20,7 @@
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
-<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
+<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="org.eclipse.cdt.debug.mi.core.CDebuggerNew"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
Modified: incubator/celix/trunk/dependency_manager/service_dependency.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/dependency_manager/service_dependency.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/dependency_manager/service_dependency.c (original)
+++ incubator/celix/trunk/dependency_manager/service_dependency.c Wed Jan 25 12:27:31 2012
@@ -79,10 +79,13 @@ void serviceDependency_start(SERVICE_DEP
dependency->tracker = NULL;
+ apr_pool_t *pool;
+ bundleContext_getMemoryPool(dependency->context, &pool);
+
if (dependency->trackedServiceFilter != NULL) {
- tracker_createWithFilter(dependency->context, dependency->trackedServiceFilter, cust, &dependency->tracker);
+ serviceTracker_createWithFilter(pool, dependency->context, dependency->trackedServiceFilter, cust, &dependency->tracker);
} else if (dependency->trackedServiceName != NULL) {
- serviceTracker_create(dependency->context, dependency->trackedServiceName, cust, &dependency->tracker);
+ serviceTracker_create(pool, dependency->context, dependency->trackedServiceName, cust, &dependency->tracker);
} else {
}
@@ -93,7 +96,6 @@ void serviceDependency_start(SERVICE_DEP
void serviceDependency_stop(SERVICE_DEPENDENCY dependency, SERVICE service) {
dependency->started = true;
serviceTracker_close(dependency->tracker);
- tracker_destroy(dependency->tracker);
}
celix_status_t serviceDependency_addingService(void * handle, SERVICE_REFERENCE reference, void **service) {
Modified: incubator/celix/trunk/examples/echo_service/client/echo_client_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/echo_service/client/echo_client_activator.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/examples/echo_service/client/echo_client_activator.c (original)
+++ incubator/celix/trunk/examples/echo_service/client/echo_client_activator.c Wed Jan 25 12:27:31 2012
@@ -49,8 +49,11 @@ celix_status_t bundleActivator_create(BU
celix_status_t bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
struct echoActivator * act = (struct echoActivator *) userData;
+ apr_pool_t *pool = NULL;
SERVICE_TRACKER tracker = NULL;
- serviceTracker_create(context, ECHO_SERVICE_NAME, NULL, &tracker);
+
+ bundleContext_getMemoryPool(context, &pool);
+ serviceTracker_create(pool, context, ECHO_SERVICE_NAME, NULL, &tracker);
act->tracker = tracker;
ECHO_CLIENT client = echoClient_create(tracker);
@@ -73,7 +76,6 @@ celix_status_t bundleActivator_stop(void
celix_status_t bundleActivator_destroy(void * userData, BUNDLE_CONTEXT context) {
struct echoActivator * act = (struct echoActivator *) userData;
echoClient_destroy(act->client);
- tracker_destroy(act->tracker);
return CELIX_SUCCESS;
}
Modified: incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c (original)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-paint-example/paint/private/src/activator.c Wed Jan 25 12:27:31 2012
@@ -66,7 +66,7 @@ celix_status_t bundleActivator_create(BU
cust->addingService = addingServ;
cust->modifiedService = modifiedServ;
cust->removedService = removedServ;
- serviceTracker_create(context, SIMPLE_SHAPE_SERVICE_NAME, cust, &activator->tracker);
+ serviceTracker_create(pool, context, SIMPLE_SHAPE_SERVICE_NAME, cust, &activator->tracker);
serviceTracker_open(activator->tracker);
}
Modified: incubator/celix/trunk/examples/whiteboard/tracker/activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/tracker/activator.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/tracker/activator.c (original)
+++ incubator/celix/trunk/examples/whiteboard/tracker/activator.c Wed Jan 25 12:27:31 2012
@@ -111,7 +111,7 @@ celix_status_t bundleActivator_start(voi
cust->modifiedService = modifiedServ;
cust->removedService = removedServ;
SERVICE_TRACKER tracker = NULL;
- serviceTracker_create(context, (char *) PUBLISHER_NAME, cust, &tracker);
+ serviceTracker_create(pool, context, (char *) PUBLISHER_NAME, cust, &tracker);
data->tracker = tracker;
serviceTracker_open(tracker);
@@ -138,5 +138,9 @@ celix_status_t bundleActivator_stop(void
celix_status_t bundleActivator_destroy(void * userData, BUNDLE_CONTEXT context) {
celix_status_t status = CELIX_SUCCESS;
+ struct data * data = (struct data *) userData;
+
+ arrayList_destroy(data->publishers);
+
return status;
}
Modified: incubator/celix/trunk/framework/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/CMakeLists.txt?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/framework/CMakeLists.txt (original)
+++ incubator/celix/trunk/framework/CMakeLists.txt Wed Jan 25 12:27:31 2012
@@ -43,5 +43,5 @@ add_library(framework SHARED ${SRC})
target_link_libraries(framework utils ${ZLIB_LIBRARY} ${APR_LIBRARY})
install(TARGETS framework DESTINATION lib COMPONENT framework)
-FILE(GLOB files "private/include/*.h")
+FILE(GLOB files "public/include/*.h")
INSTALL(FILES ${files} DESTINATION include COMPONENT framework)
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=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_context.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_context.c Wed Jan 25 12:27:31 2012
@@ -72,12 +72,12 @@ celix_status_t bundleContext_destroy(BUN
celix_status_t status = CELIX_SUCCESS;
if (context != NULL) {
- context->bundle = NULL;
- context->framework = NULL;
if (context->pool) {
apr_pool_destroy(context->pool);
context->pool = NULL;
}
+ context->bundle = NULL;
+ context->framework = NULL;
free(context);
context = NULL;
} else {
Modified: incubator/celix/trunk/framework/private/src/filter.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/filter.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/filter.c (original)
+++ incubator/celix/trunk/framework/private/src/filter.c Wed Jan 25 12:27:31 2012
@@ -90,8 +90,17 @@ void filter_destroy(FILTER filter) {
arrayList_clear(filter->value);
arrayList_destroy(filter->value);
filter->value = NULL;
+ } else if (filter->operand == OR) {
+ int size = arrayList_size(filter->value);
+ int i = 0;
+ for (i = 0; i < size; i++) {
+ FILTER f = arrayList_get(filter->value, i);
+ filter_destroy(f);
+ }
+ arrayList_destroy(filter->value);
+ filter->value = NULL;
} else {
- free(filter->value);
+ free(filter->value);
filter->value = NULL;
}
free(filter->attribute);
Modified: incubator/celix/trunk/framework/private/src/service_tracker.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/service_tracker.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/service_tracker.c (original)
+++ incubator/celix/trunk/framework/private/src/service_tracker.c Wed Jan 25 12:27:31 2012
@@ -34,28 +34,34 @@ struct serviceTracker {
BUNDLE_CONTEXT context;
char * filter;
- FW_SERVICE_TRACKER fwTracker;
+ apr_pool_t *pool;
+ SERVICE_TRACKER tracker;
+ SERVICE_TRACKER_CUSTOMIZER customizer;
+ SERVICE_LISTENER listener;
+ ARRAY_LIST tracked;
};
-// #todo: Remove this, make SERVICE_TRACKER an ADT to keep "hidden" information
-//ARRAY_LIST m_trackers;
+struct tracked {
+ SERVICE_REFERENCE reference;
+ void * service;
+};
-void * addingService(FW_SERVICE_TRACKER, SERVICE_REFERENCE);
-celix_status_t serviceTracker_track(FW_SERVICE_TRACKER, SERVICE_REFERENCE, SERVICE_EVENT);
-celix_status_t serviceTracker_untrack(FW_SERVICE_TRACKER fwTracker, SERVICE_REFERENCE reference, SERVICE_EVENT event);
+typedef struct tracked * TRACKED;
-celix_status_t serviceTracker_create(BUNDLE_CONTEXT context, char * service, SERVICE_TRACKER_CUSTOMIZER customizer, SERVICE_TRACKER *tracker) {
+static apr_status_t serviceTracker_destroy(void *trackerP);
+static void * addingService(SERVICE_TRACKER tracker, SERVICE_REFERENCE reference);
+static celix_status_t serviceTracker_track(SERVICE_TRACKER tracker, SERVICE_REFERENCE reference, SERVICE_EVENT event);
+static celix_status_t serviceTracker_untrack(SERVICE_TRACKER tracker, SERVICE_REFERENCE reference, SERVICE_EVENT event);
+
+celix_status_t serviceTracker_create(apr_pool_t *pool, BUNDLE_CONTEXT context, char * service, SERVICE_TRACKER_CUSTOMIZER customizer, SERVICE_TRACKER *tracker) {
celix_status_t status = CELIX_SUCCESS;
- if (service == NULL) {
+ if (service == NULL || *tracker != NULL) {
status = CELIX_ILLEGAL_ARGUMENT;
} else {
- apr_pool_t *pool = NULL;
- //status = bundleContext_getMemoryPool(context, &pool);
if (status == CELIX_SUCCESS) {
int len = strlen(service) + strlen(OBJECTCLASS) + 4;
- //char *filter = apr_palloc(pool, sizeof(char) * len);
- char *filter = malloc(sizeof(char) * len);
+ char *filter = apr_palloc(pool, sizeof(char) * len);
if (filter == NULL) {
status = CELIX_ENOMEM;
} else {
@@ -64,7 +70,7 @@ celix_status_t serviceTracker_create(BUN
strcat(filter, "=");
strcat(filter, service);
strcat(filter, ")\0");
- tracker_createWithFilter(context, filter, customizer, tracker);
+ serviceTracker_createWithFilter(pool, context, filter, customizer, tracker);
}
}
}
@@ -73,37 +79,42 @@ celix_status_t serviceTracker_create(BUN
return status;
}
-celix_status_t tracker_createWithFilter(BUNDLE_CONTEXT context, char * filter, SERVICE_TRACKER_CUSTOMIZER customizer, SERVICE_TRACKER *tracker) {
- FW_SERVICE_TRACKER fw_tracker;
- apr_pool_t *pool;
- *tracker = (SERVICE_TRACKER) malloc(sizeof(**tracker));
- fw_tracker = (FW_SERVICE_TRACKER) malloc(sizeof(*fw_tracker));
- bundleContext_getMemoryPool(context, &pool);
-
-// if (m_trackers == NULL) {
-// arrayList_create(pool, &m_trackers);
-// }
- (*tracker)->context = context;
- (*tracker)->filter = filter;
-
- fw_tracker->pool = pool;
- fw_tracker->tracker = *tracker;
- fw_tracker->tracked = NULL;
- arrayList_create(pool, &fw_tracker->tracked);
- fw_tracker->customizer = customizer;
+celix_status_t serviceTracker_createWithFilter(apr_pool_t *pool, BUNDLE_CONTEXT context, char * filter, SERVICE_TRACKER_CUSTOMIZER customizer, SERVICE_TRACKER *tracker) {
+ celix_status_t status = CELIX_SUCCESS;
+
+ *tracker = (SERVICE_TRACKER) apr_palloc(pool, sizeof(**tracker));
+ if (!*tracker) {
+ status = CELIX_ENOMEM;
+ } else {
+ apr_pool_pre_cleanup_register(pool, *tracker, serviceTracker_destroy);
+
+ (*tracker)->context = context;
+ (*tracker)->filter = filter;
- (*tracker)->fwTracker = fw_tracker;
+ (*tracker)->pool = pool;
+ (*tracker)->tracker = *tracker;
+ (*tracker)->tracked = NULL;
+ arrayList_create(pool, &(*tracker)->tracked);
+ (*tracker)->customizer = customizer;
+ (*tracker)->listener = NULL;
+ }
-// arrayList_add(m_trackers, fw_tracker);
+ return status;
+}
- return CELIX_SUCCESS;
+apr_status_t serviceTracker_destroy(void *trackerP) {
+ SERVICE_TRACKER tracker = trackerP;
+ bundleContext_removeServiceListener(tracker->context, tracker->listener);
+ arrayList_destroy(tracker->tracked);
+
+ return APR_SUCCESS;
}
celix_status_t serviceTracker_open(SERVICE_TRACKER tracker) {
SERVICE_LISTENER listener;
ARRAY_LIST initial = NULL;
celix_status_t status = CELIX_SUCCESS;
- listener = (SERVICE_LISTENER) malloc(sizeof(*listener));
+ listener = (SERVICE_LISTENER) apr_palloc(tracker->pool, sizeof(*listener));
// FW_SERVICE_TRACKER fwTracker = findFwServiceTracker(tracker);
status = bundleContext_getServiceReferences(tracker->context, NULL, tracker->filter, &initial);
@@ -111,16 +122,16 @@ celix_status_t serviceTracker_open(SERVI
SERVICE_REFERENCE initial_reference;
unsigned int i;
- listener->pool = tracker->fwTracker->pool;
+ listener->pool = tracker->pool;
listener->handle = tracker;
listener->serviceChanged = (void *) tracker_serviceChanged;
status = bundleContext_addServiceListener(tracker->context, listener, tracker->filter);
if (status == CELIX_SUCCESS) {
- tracker->fwTracker->listener = listener;
+ tracker->listener = listener;
for (i = 0; i < arrayList_size(initial); i++) {
initial_reference = (SERVICE_REFERENCE) arrayList_get(initial, i);
- serviceTracker_track(tracker->fwTracker, initial_reference, NULL);
+ serviceTracker_track(tracker, initial_reference, NULL);
}
arrayList_clear(initial);
arrayList_destroy(initial);
@@ -135,15 +146,14 @@ celix_status_t serviceTracker_open(SERVI
celix_status_t serviceTracker_close(SERVICE_TRACKER tracker) {
celix_status_t status = CELIX_SUCCESS;
- FW_SERVICE_TRACKER fwTracker = tracker->fwTracker;
- status = bundleContext_removeServiceListener(tracker->context, fwTracker->listener);
+ status = bundleContext_removeServiceListener(tracker->context, tracker->listener);
if (status == CELIX_SUCCESS) {
ARRAY_LIST refs = tracker_getServiceReferences(tracker);
if (refs != NULL) {
int i;
for (i = 0; i < arrayList_size(refs); i++) {
SERVICE_REFERENCE ref = arrayList_get(refs, i);
- status = serviceTracker_untrack(fwTracker, ref, NULL);
+ status = serviceTracker_untrack(tracker, ref, NULL);
}
}
arrayList_destroy(refs);
@@ -152,23 +162,11 @@ celix_status_t serviceTracker_close(SERV
return status;
}
-void tracker_destroy(SERVICE_TRACKER tracker) {
- FW_SERVICE_TRACKER fwTracker = tracker->fwTracker;
- bundleContext_removeServiceListener(tracker->context, fwTracker->listener);
-// arrayList_destroy(m_trackers);
- arrayList_destroy(fwTracker->tracked);
- free(fwTracker->listener);
- free(fwTracker);
- tracker = NULL;
- free(tracker);
-}
-
SERVICE_REFERENCE tracker_getServiceReference(SERVICE_TRACKER tracker) {
- FW_SERVICE_TRACKER fwTracker = tracker->fwTracker;
TRACKED tracked;
unsigned int i;
- for (i = 0; i < arrayList_size(fwTracker->tracked); i++) {
- tracked = (TRACKED) arrayList_get(fwTracker->tracked, i);
+ for (i = 0; i < arrayList_size(tracker->tracked); i++) {
+ tracked = (TRACKED) arrayList_get(tracker->tracked, i);
return tracked->reference;
}
return NULL;
@@ -177,27 +175,23 @@ SERVICE_REFERENCE tracker_getServiceRefe
ARRAY_LIST tracker_getServiceReferences(SERVICE_TRACKER tracker) {
TRACKED tracked;
unsigned int i;
- FW_SERVICE_TRACKER fwTracker = tracker->fwTracker;
- int size = arrayList_size(fwTracker->tracked);
+ int size = arrayList_size(tracker->tracked);
ARRAY_LIST references = NULL;
- arrayList_create(fwTracker->pool, &references);
+ arrayList_create(tracker->pool, &references);
- for (i = 0; i < arrayList_size(fwTracker->tracked); i++) {
- tracked = (TRACKED) arrayList_get(fwTracker->tracked, i);
+ for (i = 0; i < arrayList_size(tracker->tracked); i++) {
+ tracked = (TRACKED) arrayList_get(tracker->tracked, i);
arrayList_add(references, tracked->reference);
}
return references;
}
void * tracker_getService(SERVICE_TRACKER tracker) {
- FW_SERVICE_TRACKER fwTracker = tracker->fwTracker;
TRACKED tracked;
unsigned int i;
- if (fwTracker != NULL) {
- for (i = 0; i < arrayList_size(fwTracker->tracked); i++) {
- tracked = (TRACKED) arrayList_get(fwTracker->tracked, i);
- return tracked->service;
- }
+ for (i = 0; i < arrayList_size(tracker->tracked); i++) {
+ tracked = (TRACKED) arrayList_get(tracker->tracked, i);
+ return tracked->service;
}
return NULL;
}
@@ -205,25 +199,23 @@ void * tracker_getService(SERVICE_TRACKE
ARRAY_LIST tracker_getServices(SERVICE_TRACKER tracker) {
TRACKED tracked;
unsigned int i;
- FW_SERVICE_TRACKER fwTracker = tracker->fwTracker;
- int size = arrayList_size(fwTracker->tracked);
+ int size = arrayList_size(tracker->tracked);
ARRAY_LIST references = NULL;
- arrayList_create(fwTracker->pool, &references);
+ arrayList_create(tracker->pool, &references);
- for (i = 0; i < arrayList_size(fwTracker->tracked); i++) {
- tracked = (TRACKED) arrayList_get(fwTracker->tracked, i);
+ for (i = 0; i < arrayList_size(tracker->tracked); i++) {
+ tracked = (TRACKED) arrayList_get(tracker->tracked, i);
arrayList_add(references, tracked->service);
}
return references;
}
void * tracker_getServiceByReference(SERVICE_TRACKER tracker, SERVICE_REFERENCE reference) {
- FW_SERVICE_TRACKER fwTracker = tracker->fwTracker;
TRACKED tracked;
unsigned int i;
- for (i = 0; i < arrayList_size(fwTracker->tracked); i++) {
+ for (i = 0; i < arrayList_size(tracker->tracked); i++) {
bool equals;
- tracked = (TRACKED) arrayList_get(fwTracker->tracked, i);
+ tracked = (TRACKED) arrayList_get(tracker->tracked, i);
serviceReference_equals(reference, tracked->reference, &equals);
if (equals) {
return tracked->service;
@@ -237,25 +229,25 @@ void tracker_serviceChanged(SERVICE_LIST
switch (event->type) {
case REGISTERED:
case MODIFIED:
- serviceTracker_track(tracker->fwTracker, event->reference, event);
+ serviceTracker_track(tracker, event->reference, event);
break;
case UNREGISTERING:
- serviceTracker_untrack(tracker->fwTracker, event->reference, event);
+ serviceTracker_untrack(tracker, event->reference, event);
break;
case MODIFIED_ENDMATCH:
break;
}
}
-celix_status_t serviceTracker_track(FW_SERVICE_TRACKER fwTracker, SERVICE_REFERENCE reference, SERVICE_EVENT event) {
+celix_status_t serviceTracker_track(SERVICE_TRACKER tracker, SERVICE_REFERENCE reference, SERVICE_EVENT event) {
celix_status_t status = CELIX_SUCCESS;
TRACKED tracked = NULL;
int found = -1;
unsigned int i;
- for (i = 0; i < arrayList_size(fwTracker->tracked); i++) {
+ for (i = 0; i < arrayList_size(tracker->tracked); i++) {
bool equals;
- tracked = (TRACKED) arrayList_get(fwTracker->tracked, i);
+ tracked = (TRACKED) arrayList_get(tracker->tracked, i);
serviceReference_equals(reference, tracked->reference, &equals);
if (equals) {
found = 0;
@@ -264,58 +256,58 @@ celix_status_t serviceTracker_track(FW_S
}
if (found) {
- void * service = addingService(fwTracker, reference);
+ void * service = addingService(tracker, reference);
if (service != NULL) {
tracked = (TRACKED) malloc(sizeof(*tracked));
tracked->reference = reference;
tracked->service = service;
- arrayList_add(fwTracker->tracked, tracked);
- if (fwTracker->customizer != NULL) {
- fwTracker->customizer->addedService(fwTracker->customizer->handle, reference, service);
+ arrayList_add(tracker->tracked, tracked);
+ if (tracker->customizer != NULL) {
+ tracker->customizer->addedService(tracker->customizer->handle, reference, service);
}
}
} else {
- if (fwTracker->customizer != NULL) {
- fwTracker->customizer->modifiedService(fwTracker->customizer->handle, reference, tracked->service);
+ if (tracker->customizer != NULL) {
+ tracker->customizer->modifiedService(tracker->customizer->handle, reference, tracked->service);
}
}
return status;
}
-void * addingService(FW_SERVICE_TRACKER fwTracker, SERVICE_REFERENCE reference) {
+void * addingService(SERVICE_TRACKER tracker, SERVICE_REFERENCE reference) {
void *svc = NULL;
- if (fwTracker->customizer != NULL) {
- fwTracker->customizer->addingService(fwTracker->customizer->handle, reference, &svc);
+ if (tracker->customizer != NULL) {
+ tracker->customizer->addingService(tracker->customizer->handle, reference, &svc);
} else {
- bundleContext_getService(fwTracker->tracker->context, reference, &svc);
+ bundleContext_getService(tracker->context, reference, &svc);
}
return svc;
}
-celix_status_t serviceTracker_untrack(FW_SERVICE_TRACKER fwTracker, SERVICE_REFERENCE reference, SERVICE_EVENT event) {
+celix_status_t serviceTracker_untrack(SERVICE_TRACKER tracker, SERVICE_REFERENCE reference, SERVICE_EVENT event) {
celix_status_t status = CELIX_SUCCESS;
TRACKED tracked = NULL;
unsigned int i;
bool result = NULL;
- for (i = 0; i < arrayList_size(fwTracker->tracked); i++) {
+ for (i = 0; i < arrayList_size(tracker->tracked); i++) {
bool equals;
- tracked = (TRACKED) arrayList_get(fwTracker->tracked, i);
+ tracked = (TRACKED) arrayList_get(tracker->tracked, i);
serviceReference_equals(reference, tracked->reference, &equals);
if (equals) {
if (tracked != NULL) {
- arrayList_remove(fwTracker->tracked, i);
- status = bundleContext_ungetService(fwTracker->tracker->context, reference, &result);
+ arrayList_remove(tracker->tracked, i);
+ status = bundleContext_ungetService(tracker->context, reference, &result);
}
if (status == CELIX_SUCCESS) {
- if (fwTracker->customizer != NULL) {
- fwTracker->customizer->removedService(fwTracker->customizer->handle, reference, tracked->service);
+ if (tracker->customizer != NULL) {
+ tracker->customizer->removedService(tracker->customizer->handle, reference, tracked->service);
} else {
- status = bundleContext_ungetService(fwTracker->tracker->context, reference, &result);
+ status = bundleContext_ungetService(tracker->tracker->context, reference, &result);
}
free(tracked);
break;
@@ -325,17 +317,3 @@ celix_status_t serviceTracker_untrack(FW
return status;
}
-
-//FW_SERVICE_TRACKER findFwServiceTracker(SERVICE_TRACKER tracker) {
-// FW_SERVICE_TRACKER fwTracker;
-// unsigned int i;
-// if (m_trackers != NULL) {
-// for (i = 0; i < arrayList_size(m_trackers); i++) {
-// fwTracker = (FW_SERVICE_TRACKER) arrayList_get(m_trackers, i);
-// if (fwTracker->tracker == tracker) {
-// return fwTracker;
-// }
-// }
-// }
-// return NULL;
-//}
Modified: incubator/celix/trunk/framework/public/include/service_tracker.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/public/include/service_tracker.h?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/framework/public/include/service_tracker.h (original)
+++ incubator/celix/trunk/framework/public/include/service_tracker.h Wed Jan 25 12:27:31 2012
@@ -42,29 +42,11 @@ typedef struct serviceTrackerCustomizer
typedef struct serviceTracker * SERVICE_TRACKER;
-struct fwServiceTracker {
- apr_pool_t *pool;
- SERVICE_TRACKER tracker;
- SERVICE_TRACKER_CUSTOMIZER customizer;
- SERVICE_LISTENER listener;
- ARRAY_LIST tracked;
-};
-
-typedef struct fwServiceTracker * FW_SERVICE_TRACKER;
-
-struct tracked {
- SERVICE_REFERENCE reference;
- void * service;
-};
-
-typedef struct tracked * TRACKED;
-
-celix_status_t serviceTracker_create(BUNDLE_CONTEXT context, char * service, SERVICE_TRACKER_CUSTOMIZER customizer, SERVICE_TRACKER *tracker);
-celix_status_t tracker_createWithFilter(BUNDLE_CONTEXT context, char * filter, SERVICE_TRACKER_CUSTOMIZER customizer, SERVICE_TRACKER *tracker);
+celix_status_t serviceTracker_create(apr_pool_t *pool, BUNDLE_CONTEXT context, char * service, SERVICE_TRACKER_CUSTOMIZER customizer, SERVICE_TRACKER *tracker);
+celix_status_t serviceTracker_createWithFilter(apr_pool_t *pool, BUNDLE_CONTEXT context, char * filter, SERVICE_TRACKER_CUSTOMIZER customizer, SERVICE_TRACKER *tracker);
celix_status_t serviceTracker_open(SERVICE_TRACKER tracker);
celix_status_t serviceTracker_close(SERVICE_TRACKER tracker);
-void tracker_destroy(SERVICE_TRACKER tracker);
SERVICE_REFERENCE tracker_getServiceReference(SERVICE_TRACKER tracker);
ARRAY_LIST tracker_getServiceReferences(SERVICE_TRACKER tracker);
Modified: incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c (original)
+++ incubator/celix/trunk/remote_services/discovery/private/src/discovery_activator.c Wed Jan 25 12:27:31 2012
@@ -71,7 +71,7 @@ celix_status_t discoveryActivator_create
custumizer->modifiedService = discovery_endpointListenerModified;
custumizer->removedService = discovery_endpointListenerRemoved;
- status = serviceTracker_create(activator->context, "endpoint_listener", custumizer, tracker);
+ status = serviceTracker_create(activator->pool, activator->context, "endpoint_listener", custumizer, tracker);
serviceTracker_open(activator->endpointListenerTracker);
}
Modified: incubator/celix/trunk/remote_services/remote_service_admin/private/src/export_registration_impl.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/remote_service_admin/private/src/export_registration_impl.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/remote_services/remote_service_admin/private/src/export_registration_impl.c (original)
+++ incubator/celix/trunk/remote_services/remote_service_admin/private/src/export_registration_impl.c Wed Jan 25 12:27:31 2012
@@ -95,7 +95,7 @@ celix_status_t exportRegistration_create
custumizer->modifiedService = exportRegistration_endpointModified;
custumizer->removedService = exportRegistration_endpointRemoved;
- status = serviceTracker_create(registration->context, REMOTE_ENDPOINT, custumizer, tracker);
+ status = serviceTracker_create(registration->pool, registration->context, REMOTE_ENDPOINT, custumizer, tracker);
}
return status;
Modified: incubator/celix/trunk/remote_services/remote_service_admin/private/src/import_registration_impl.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/remote_service_admin/private/src/import_registration_impl.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/remote_services/remote_service_admin/private/src/import_registration_impl.c (original)
+++ incubator/celix/trunk/remote_services/remote_service_admin/private/src/import_registration_impl.c Wed Jan 25 12:27:31 2012
@@ -83,7 +83,7 @@ celix_status_t importRegistration_create
custumizer->modifiedService = importRegistration_proxyModified;
custumizer->removedService = importRegistration_proxyRemoved;
- status = serviceTracker_create(registration->context, REMOTE_PROXY, custumizer, tracker);
+ status = serviceTracker_create(registration->pool, registration->context, REMOTE_PROXY, custumizer, tracker);
}
return status;
Modified: incubator/celix/trunk/remote_services/topology_manager/private/src/activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/remote_services/topology_manager/private/src/activator.c?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/remote_services/topology_manager/private/src/activator.c (original)
+++ incubator/celix/trunk/remote_services/topology_manager/private/src/activator.c Wed Jan 25 12:27:31 2012
@@ -82,7 +82,7 @@ celix_status_t bundleActivator_createRSA
custumizer->modifiedService = topologyManager_rsaModified;
custumizer->removedService = topologyManager_rsaRemoved;
- status = serviceTracker_create(activator->context, "remote_service_admin", custumizer, tracker);
+ status = serviceTracker_create(activator->pool, activator->context, "remote_service_admin", custumizer, tracker);
}
return status;
Modified: incubator/celix/trunk/target.cmake
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/target.cmake?rev=1235725&r1=1235724&r2=1235725&view=diff
==============================================================================
--- incubator/celix/trunk/target.cmake (original)
+++ incubator/celix/trunk/target.cmake Wed Jan 25 12:27:31 2012
@@ -19,6 +19,6 @@
#deploy("shell test" BUNDLES shell)
deploy("hello_world" BUNDLES shell shell_tui hello_world log_service)
#deploy("deployer" BUNDLES shell shell_tui deployer)
-#deploy("wb" BUNDLES tracker publisherA publisherB shell shell_tui log_service log_writer)
-deploy("wb_dp" BUNDLES tracker_depman publisherA publisherB shell shell_tui log_service log_writer)
+deploy("wb" BUNDLES tracker publisherA publisherB shell shell_tui log_service)
+deploy("wb_dp" BUNDLES tracker_depman publisherA publisherB shell shell_tui log_service)
#deploy("echo" BUNDLES echo_server echo_client shell shell_tui)