CELIX-381: Invokeset now called after suspend for dependency in a dm component.
Project: http://git-wip-us.apache.org/repos/asf/celix/repo Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/210f87c2 Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/210f87c2 Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/210f87c2 Branch: refs/heads/develop Commit: 210f87c2109bdcbe3450b81ded2af780098900de Parents: 2489419 Author: Pepijn Noltes <pepijnnol...@gmail.com> Authored: Sat Oct 15 17:14:56 2016 +0200 Committer: Pepijn Noltes <pepijnnol...@gmail.com> Committed: Sat Oct 15 17:14:56 2016 +0200 ---------------------------------------------------------------------- .../private/src/dm_component_impl.c | 20 +++++++++++--------- .../phase2a/private/src/phase2a_cmp.c | 2 +- .../phase2b/private/src/phase2b_cmp.c | 2 +- .../dm_example/phase3/private/src/phase3_cmp.c | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/celix/blob/210f87c2/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 5b5c0ca..27db3a5 100644 --- a/dependency_manager/private/src/dm_component_impl.c +++ b/dependency_manager/private/src/dm_component_impl.c @@ -468,9 +468,9 @@ celix_status_t component_handleAdded(dm_component_pt component, dm_service_depen serviceDependency_setAvailable(dependency, true); - serviceDependency_invokeSet(dependency, event); switch (component->state) { case DM_CMP_STATE_WAITING_FOR_REQUIRED: { + serviceDependency_invokeSet(dependency, event); bool required = false; serviceDependency_isRequired(dependency, &required); if (required) { @@ -485,6 +485,7 @@ celix_status_t component_handleAdded(dm_component_pt component, dm_service_depen serviceDependency_isRequired(dependency, &required); if (!instanceBound) { if (required) { + serviceDependency_invokeSet(dependency, event); serviceDependency_invokeAdd(dependency, event); } dm_event_pt event = NULL; @@ -498,9 +499,10 @@ celix_status_t component_handleAdded(dm_component_pt component, dm_service_depen break; } case DM_CMP_STATE_TRACKING_OPTIONAL: - component_suspend(component,dependency); + component_suspend(component,dependency); + serviceDependency_invokeSet(dependency, event); serviceDependency_invokeAdd(dependency, event); - component_resume(component,dependency); + component_resume(component,dependency); dm_event_pt event = NULL; component_getDependencyEvent(component, dependency, &event); component_updateInstance(component, dependency, event, false, true); @@ -529,9 +531,9 @@ celix_status_t component_handleChanged(dm_component_pt component, dm_service_dep serviceDependency_invokeSet(dependency, event); switch (component->state) { case DM_CMP_STATE_TRACKING_OPTIONAL: - component_suspend(component,dependency); + component_suspend(component,dependency); serviceDependency_invokeChange(dependency, event); - component_resume(component,dependency); + component_resume(component,dependency); dm_event_pt hevent = NULL; component_getDependencyEvent(component, dependency, &hevent); component_updateInstance(component, dependency, hevent, true, false); @@ -598,10 +600,10 @@ celix_status_t component_handleRemoved(dm_component_pt component, dm_service_dep break; } case DM_CMP_STATE_TRACKING_OPTIONAL: - component_suspend(component,dependency); + component_suspend(component,dependency); serviceDependency_invokeSet(dependency, event); serviceDependency_invokeRemove(dependency, event); - component_resume(component,dependency); + component_resume(component,dependency); dm_event_pt hevent = NULL; component_getDependencyEvent(component, dependency, &hevent); component_updateInstance(component, dependency, hevent, false, false); @@ -651,9 +653,9 @@ celix_status_t component_handleSwapped(dm_component_pt component, dm_service_dep break; } case DM_CMP_STATE_TRACKING_OPTIONAL: - component_suspend(component,dependency); + component_suspend(component,dependency); serviceDependency_invokeSwap(dependency, event, newEvent); - component_resume(component,dependency); + component_resume(component,dependency); break; default: break; http://git-wip-us.apache.org/repos/asf/celix/blob/210f87c2/examples/dm_example/phase2a/private/src/phase2a_cmp.c ---------------------------------------------------------------------- diff --git a/examples/dm_example/phase2a/private/src/phase2a_cmp.c b/examples/dm_example/phase2a/private/src/phase2a_cmp.c index 3d04196..e0b1cc8 100644 --- a/examples/dm_example/phase2a/private/src/phase2a_cmp.c +++ b/examples/dm_example/phase2a/private/src/phase2a_cmp.c @@ -74,7 +74,7 @@ int phase2a_stop(phase2a_cmp_t *cmp) { } int phase2a_deinit(phase2a_cmp_t *cmp) { - printf("deinit phase1\n"); + printf("deinit phase2a\n"); return 0; } http://git-wip-us.apache.org/repos/asf/celix/blob/210f87c2/examples/dm_example/phase2b/private/src/phase2b_cmp.c ---------------------------------------------------------------------- diff --git a/examples/dm_example/phase2b/private/src/phase2b_cmp.c b/examples/dm_example/phase2b/private/src/phase2b_cmp.c index 4c86f42..ccaa94d 100644 --- a/examples/dm_example/phase2b/private/src/phase2b_cmp.c +++ b/examples/dm_example/phase2b/private/src/phase2b_cmp.c @@ -74,7 +74,7 @@ int phase2b_stop(phase2b_cmp_t *cmp) { } int phase2b_deinit(phase2b_cmp_t *cmp) { - printf("deinit phase1\n"); + printf("deinit phase2b\n"); return 0; } http://git-wip-us.apache.org/repos/asf/celix/blob/210f87c2/examples/dm_example/phase3/private/src/phase3_cmp.c ---------------------------------------------------------------------- diff --git a/examples/dm_example/phase3/private/src/phase3_cmp.c b/examples/dm_example/phase3/private/src/phase3_cmp.c index 0d421c8..47cb720 100644 --- a/examples/dm_example/phase3/private/src/phase3_cmp.c +++ b/examples/dm_example/phase3/private/src/phase3_cmp.c @@ -74,7 +74,7 @@ int phase3_stop(phase3_cmp_t *cmp) { } int phase3_deinit(phase3_cmp_t *cmp) { - printf("deinit phase1\n"); + printf("deinit phase3\n"); return 0; }