From e599b4ba129df475a9c8bb8290c3803f9dda664a Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Thu, 7 Dec 2017 18:49:09 +0100 Subject: Load additionnals object at runtime Later integrated in controller submodule Change-Id: I7d5c7431e60fc16cc2053747674fe4f14efd6a14 Signed-off-by: Romain Forlot --- signal-composer-binding/signal-composer.cpp | 32 ++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'signal-composer-binding/signal-composer.cpp') diff --git a/signal-composer-binding/signal-composer.cpp b/signal-composer-binding/signal-composer.cpp index 3ad2d4e..8461748 100644 --- a/signal-composer-binding/signal-composer.cpp +++ b/signal-composer-binding/signal-composer.cpp @@ -634,6 +634,18 @@ int Composer::loadConfig(const std::string& filepath) // return -1; } +int Composer::loadSources(json_object* sourcesJ) +{ + int err = loadSourcesAPI(nullptr, nullptr, sourcesJ); + if(err) + { + AFB_ERROR("Loading sources failed. JSON: %s", json_object_to_json_string(sourcesJ)); + return err; + } + initSourcesAPI(); + return err; +} + int Composer::loadSignals(json_object* signalsJ) { return loadSignals(nullptr, nullptr, signalsJ); @@ -646,10 +658,23 @@ CtlConfigT* Composer::ctlConfig() void Composer::initSourcesAPI() { - for(auto& src: sourcesListV_) + for(int i=0; i < newSourcesListV_.size(); i++) { + std::shared_ptr src = newSourcesListV_.back(); + newSourcesListV_.pop_back(); src->init(); + sourcesListV_.push_back(src); + } +} + +void Composer::initSignals() +{ + for(int i=0; i < sourcesListV_.size(); i++) + { + std::shared_ptr src = sourcesListV_[i]; + src->initSignals(); } + execSignalsSubscription(); } std::shared_ptr Composer::getSourceAPI(const std::string& api) @@ -659,6 +684,11 @@ std::shared_ptr Composer::getSourceAPI(const std::string& api) if (source->api() == api) {return source;} } + for(auto& source: newSourcesListV_) + { + if (source->api() == api) + {return source;} + } return nullptr; } -- cgit 1.2.3-korg