You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by er...@apache.org on 2018/04/19 06:38:41 UTC
celix git commit: Added dependencyManager_remove(C)
/DependencyManager::destroyComponent (C++) function to be able to remove a
component from a started Dependency manager.
Repository: celix
Updated Branches:
refs/heads/develop 78460c7a7 -> 83cf4c964
Added dependencyManager_remove(C) /DependencyManager::destroyComponent (C++) function to be able to remove a component from a started Dependency manager.
Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/83cf4c96
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/83cf4c96
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/83cf4c96
Branch: refs/heads/develop
Commit: 83cf4c9643005f4b7df8edc9b2498d2159608830
Parents: 78460c7
Author: Erjan Altena <er...@gmail.com>
Authored: Wed Apr 18 10:23:24 2018 +0200
Committer: Erjan Altena <er...@gmail.com>
Committed: Thu Apr 19 08:37:55 2018 +0200
----------------------------------------------------------------------
dependency_manager/api/dm_dependency_manager.h | 5 +++++
dependency_manager/src/dm_dependency_manager_impl.c | 14 ++++++++++++--
.../include/celix/dm/DependencyManager.h | 8 ++++++++
3 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/celix/blob/83cf4c96/dependency_manager/api/dm_dependency_manager.h
----------------------------------------------------------------------
diff --git a/dependency_manager/api/dm_dependency_manager.h b/dependency_manager/api/dm_dependency_manager.h
index 89fe51d..8e01302 100644
--- a/dependency_manager/api/dm_dependency_manager.h
+++ b/dependency_manager/api/dm_dependency_manager.h
@@ -57,6 +57,11 @@ void dependencyManager_destroy(dm_dependency_manager_pt manager);
celix_status_t dependencyManager_add(dm_dependency_manager_pt manager, dm_component_pt component);
/**
+ * Removes a DM component from the dependency manager and destroys it
+ */
+celix_status_t dependencyManager_remove(dm_dependency_manager_pt manager, dm_component_pt component);
+
+/**
* Removes all DM components from the dependency manager
*/
celix_status_t dependencyManager_removeAllComponents(dm_dependency_manager_pt manager);
http://git-wip-us.apache.org/repos/asf/celix/blob/83cf4c96/dependency_manager/src/dm_dependency_manager_impl.c
----------------------------------------------------------------------
diff --git a/dependency_manager/src/dm_dependency_manager_impl.c b/dependency_manager/src/dm_dependency_manager_impl.c
index 4864be1..14c02f6 100644
--- a/dependency_manager/src/dm_dependency_manager_impl.c
+++ b/dependency_manager/src/dm_dependency_manager_impl.c
@@ -66,6 +66,16 @@ celix_status_t dependencyManager_add(dm_dependency_manager_pt manager, dm_compon
return status;
}
+celix_status_t dependencyManager_remove(dm_dependency_manager_pt manager, dm_component_pt component) {
+ celix_status_t status;
+
+ arrayList_removeElement(manager->components, component);
+ status = component_stop(component);
+ component_destroy(component);
+
+ return status;
+}
+
celix_status_t dependencyManager_removeAllComponents(dm_dependency_manager_pt manager) {
celix_status_t status = CELIX_SUCCESS;
@@ -89,7 +99,7 @@ celix_status_t dependencyManager_removeAllComponents(dm_dependency_manager_pt ma
celix_status_t dependencyManager_getInfo(dm_dependency_manager_pt manager, dm_dependency_manager_info_pt *out) {
celix_status_t status = CELIX_SUCCESS;
- int i;
+ unsigned int i;
int size;
dm_component_info_pt cmpInfo = NULL;
dm_dependency_manager_info_pt info = calloc(1, sizeof(*info));
@@ -118,7 +128,7 @@ celix_status_t dependencyManager_getInfo(dm_dependency_manager_pt manager, dm_de
return status;
}
-void dependencyManager_destroyInfo(dm_dependency_manager_pt manager, dm_dependency_manager_info_pt info) {
+void dependencyManager_destroyInfo(dm_dependency_manager_pt __attribute__((__unused__)) manager, dm_dependency_manager_info_pt info) {
unsigned int i = 0;
for (; i < arrayList_size(info->components); i += 1) {
dm_component_info_pt cmpinfo = (dm_component_info_pt)arrayList_get(info->components, i);
http://git-wip-us.apache.org/repos/asf/celix/blob/83cf4c96/dependency_manager_cxx/include/celix/dm/DependencyManager.h
----------------------------------------------------------------------
diff --git a/dependency_manager_cxx/include/celix/dm/DependencyManager.h b/dependency_manager_cxx/include/celix/dm/DependencyManager.h
index afafacc..8648bc9 100644
--- a/dependency_manager_cxx/include/celix/dm/DependencyManager.h
+++ b/dependency_manager_cxx/include/celix/dm/DependencyManager.h
@@ -121,6 +121,14 @@ namespace celix { namespace dm {
}
/**
+ * Removes a component from the Dependency Manager and destroys it
+ */
+ template<typename T>
+ void destroyComponent(Component<T> &component) {
+ dependencyManager_remove(cDepMan, component.cComponent());
+ }
+
+ /**
* Stops the Dependency Manager
*/
void stop() {