diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-09-15 16:29:17 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-12-14 11:00:25 +0100 |
commit | 677cde6288a4574b8251a4a532b1d9e1594b09b2 (patch) | |
tree | c510a0cdd76e2b8de1cdaf254fd270c8bfebae42 /signal-composer-binding/signal-composer.cpp | |
parent | eabae24ea592420de46e36f0b1af5d39eee5b8a4 (diff) |
Subscription by plugin to signals
Change-Id: Icb923f87df2be8eb664106bc9077b3a8221dd3ce
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'signal-composer-binding/signal-composer.cpp')
-rw-r--r-- | signal-composer-binding/signal-composer.cpp | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/signal-composer-binding/signal-composer.cpp b/signal-composer-binding/signal-composer.cpp index a1300e3..3158797 100644 --- a/signal-composer-binding/signal-composer.cpp +++ b/signal-composer-binding/signal-composer.cpp @@ -114,7 +114,7 @@ CtlActionT* bindingApp::convert2Action(const std::string& name, json_object* act int bindingApp::loadOneSourceAPI(json_object* sourceJ) { json_object *initJ = nullptr, *getSignalJ = nullptr; - CtlActionT *initCtl, *getSignalCtl; + CtlActionT *initCtl = nullptr, *getSignalCtl = nullptr; const char *api, *info; int err = wrap_json_unpack(sourceJ, "{ss,s?s,s?o,s?o !}", @@ -205,7 +205,6 @@ int bindingApp::loadOneSignal(json_object* signalJ) } // Process sources JSON object - // TODO: claneys, really needs to factorize JSON array processing if (json_object_get_type(sourcesJ) == json_type_array) { int count = json_object_array_length(sourcesJ); @@ -251,19 +250,22 @@ int bindingApp::loadSignals(CtlSectionT* section, json_object *signalsJ) int err = 0; bindingApp& bApp = instance(); - if (json_object_get_type(signalsJ) == json_type_array) + if(signalsJ) { - int count = json_object_array_length(signalsJ); - - for (int idx = 0; idx < count; idx++) + if (json_object_get_type(signalsJ) == json_type_array) { - json_object *signalJ = json_object_array_get_idx(signalsJ, idx); - err = bApp.loadOneSignal(signalJ); - if (err) return err; + int count = json_object_array_length(signalsJ); + + for (int idx = 0; idx < count; idx++) + { + json_object *signalJ = json_object_array_get_idx(signalsJ, idx); + err = bApp.loadOneSignal(signalJ); + if (err) return err; + } } + else + {err = bApp.loadOneSignal(signalsJ);} } - else - {err = bApp.loadOneSignal(signalsJ);} return err; } @@ -306,3 +308,16 @@ CtlConfigT* bindingApp::ctlConfig() { return ctlConfig_; } + +int bindingApp::execSubscription() const +{ + int err = 0; + for(const SourceAPI& srcAPI: sourcesList_) + { + if (srcAPI.api() != std::string(ctlConfig_->api)) + { + err += srcAPI.makeSubscription(); + } + } + return err; +} |