Repository: celix Updated Branches: refs/heads/feature/CELIX-269_depman d040f001a -> 02c563103
CELIX-269: Changed the component add service dependency function from vararg to non vararg Project: http://git-wip-us.apache.org/repos/asf/celix/repo Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/02c56310 Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/02c56310 Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/02c56310 Branch: refs/heads/feature/CELIX-269_depman Commit: 02c56310348cf341c0d4c2bf43c6a373fcb05246 Parents: d040f00 Author: Pepijn Noltes <pepijnnol...@gmail.com> Authored: Thu Oct 29 16:43:50 2015 +0100 Committer: Pepijn Noltes <pepijnnol...@gmail.com> Committed: Thu Oct 29 16:43:50 2015 +0100 ---------------------------------------------------------------------- dependency_manager/private/src/dm_component_impl.c | 10 +++++++--- dependency_manager/public/include/dm_component.h | 2 +- .../tracker_depman/private/src/dependency_activator.c | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/celix/blob/02c56310/dependency_manager/private/src/dm_component_impl.c ---------------------------------------------------------------------- diff --git a/dependency_manager/private/src/dm_component_impl.c b/dependency_manager/private/src/dm_component_impl.c index ec13933..a36e232 100644 --- a/dependency_manager/private/src/dm_component_impl.c +++ b/dependency_manager/private/src/dm_component_impl.c @@ -166,23 +166,25 @@ celix_status_t component_destroy(dm_component_pt *component_ptr) { return status; } -celix_status_t component_addServiceDependency(dm_component_pt component, ...) { +celix_status_t component_addServiceDependency(dm_component_pt component, dm_service_dependency_pt dep) { celix_status_t status = CELIX_SUCCESS; array_list_pt dependenciesList = NULL; arrayList_create(&dependenciesList); + arrayList_add(dependenciesList, dep); + /* va_list dependencies; va_start(dependencies, component); dm_service_dependency_pt dependency = va_arg(dependencies, dm_service_dependency_pt); while (dependency != NULL) { arrayList_add(dependenciesList, dependency); - dependency = va_arg(dependencies, dm_service_dependency_pt); } va_end(dependencies); + */ executor_executeTask(component->executor, component, component_addTask, dependenciesList); // component_addTask(component, dependenciesList); @@ -1351,12 +1353,14 @@ celix_status_t component_getComponentInfo(dm_component_pt component, dm_componen celixThreadMutex_lock(&component->mutex); size = arrayList_size(component->dependencies); - for (i = 0; status == CELIX_SUCCESS && i < size; i += 1) { + for (i = 0; i < size; i += 1) { dm_service_dependency_pt dep = arrayList_get(component->dependencies, i); dm_service_dependency_info_pt depInfo= NULL; status = serviceDependency_getServiceDependencyInfo(dep, &depInfo); if (status == CELIX_SUCCESS) { arrayList_add(info->dependency_list, depInfo); + } else { + break; } } celixThreadMutex_unlock(&component->mutex); http://git-wip-us.apache.org/repos/asf/celix/blob/02c56310/dependency_manager/public/include/dm_component.h ---------------------------------------------------------------------- diff --git a/dependency_manager/public/include/dm_component.h b/dependency_manager/public/include/dm_component.h index 12dbcca..cf709cd 100644 --- a/dependency_manager/public/include/dm_component.h +++ b/dependency_manager/public/include/dm_component.h @@ -55,7 +55,7 @@ celix_status_t component_setImplementation(dm_component_pt component, void *impl */ celix_status_t component_getInterfaces(dm_component_pt component, array_list_pt *servicesNames); -celix_status_t component_addServiceDependency(dm_component_pt component, ...); +celix_status_t component_addServiceDependency(dm_component_pt component, dm_service_dependency_pt dep); celix_status_t component_removeServiceDependency(dm_component_pt component, dm_service_dependency_pt dependency); celix_status_t component_setCallbacks(dm_component_pt component, init_fpt init, start_fpt start, stop_fpt stop, deinit_fpt deinit); http://git-wip-us.apache.org/repos/asf/celix/blob/02c56310/examples/whiteboard/tracker_depman/private/src/dependency_activator.c ---------------------------------------------------------------------- diff --git a/examples/whiteboard/tracker_depman/private/src/dependency_activator.c b/examples/whiteboard/tracker_depman/private/src/dependency_activator.c index 4e36321..2ce9bab 100644 --- a/examples/whiteboard/tracker_depman/private/src/dependency_activator.c +++ b/examples/whiteboard/tracker_depman/private/src/dependency_activator.c @@ -62,14 +62,14 @@ celix_status_t dm_init(void * userData, bundle_context_pt context, dm_dependency serviceDependency_setRequired(dep1, true); serviceDependency_setService(dep1, PUBLISHER_NAME, "(|(id=A)(id=B))"); serviceDependency_setCallbacksWithServiceReference(dep1, NULL /*tracker_setServ*/, tracker_addedServ, tracker_modifiedServ, tracker_removedServ, NULL); - component_addServiceDependency(service, dep1, NULL); + component_addServiceDependency(service, dep1); serviceDependency_create(&dep2); serviceDependency_setRequired(dep2, false); serviceDependency_setService(dep2, (char *) OSGI_LOGSERVICE_NAME, NULL); serviceDependency_setCallbacksWithServiceReference(dep2, NULL /*tracker_setLog*/, tracker_addLog, tracker_modifiedLog, tracker_removeLog, NULL); serviceDependency_setAutoConfigure(dep2, &data->logger_lock, (void **) &data->logger); - component_addServiceDependency(service, dep2, NULL); + component_addServiceDependency(service, dep2); data->service = service; data->dep = dep1;