From d663f702c0e4fa562783504a483dce8f362d628e Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Tue, 12 Sep 2017 00:29:28 +0200 Subject: Progression on config parsing. Change-Id: Idd8d8987ccabef381f6d79c1d508930a2d4bae3c Signed-off-by: Romain Forlot --- signal-composer-binding/signal-composer.hpp | 92 ++++++++++++----------------- 1 file changed, 39 insertions(+), 53 deletions(-) (limited to 'signal-composer-binding/signal-composer.hpp') diff --git a/signal-composer-binding/signal-composer.hpp b/signal-composer-binding/signal-composer.hpp index bcfe60f..44b958f 100644 --- a/signal-composer-binding/signal-composer.hpp +++ b/signal-composer-binding/signal-composer.hpp @@ -13,60 +13,46 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ - #pragma once +*/ +#pragma once - #include - #include - #include - #include - #include - #include - #include - extern "C" - { - #define AFB_BINDING_VERSION 2 - #include - }; +#include +#include +#include +#include +#include +#include - struct TimedEvent { - int interval; - afb_event event; - std::string name; - std::string eventName; - }; +#include "source.hpp" +#include "signal-composer-binding.hpp" - struct Signal { - std::string name; - std::string source; - std::string sig_class; - std::string type; - }; +class bindingApp +{ +private: + CtlConfigT* ctlConfig_; - class SignalComposer - { - public: - SignalComposer(); - void treatMessage(json_object *message); - bool subscribe(afb_req request); - bool unsubscribe(afb_req request); - bool get(afb_req request, json_object **json); - void tick(sd_event_source *source, const long &now, void *interv); - void startTimer(const int &t); - ~SignalComposer(); - int parseConfigAndSubscribe(const std::string& confd); - static bool startsWith(const std::string &s, const std::string &val); - static void callBackFromSubscribe(void *handle, int iserror, json_object *result); - private: - std::map events; - std::map> timedEvents; - std::map> registeredObjects; - std::map> lowMessagesToObjects; - std::set timers; - std::string generateId() const; - json_object *generateJson(const std::string &messageObject, std::vector *fields = nullptr); - void registerObjects(const std::string& uri, std::map& properties); - std::map> loadDefinitions(json_object* definitionsJ) const; - void loadResources(json_object* resourcesJ, std::map>& properties); - int subscribeRegisteredObjects() const; - }; + static CtlSectionT ctlSections_[]; ///< Config Section definition (note: controls section index should match handle retrieval in) + std::vector sourcesList_; + + explicit bindingApp(const std::string& filepath); + bindingApp(); + ~bindingApp(); + + CtlActionT* convert2Action(const std::string& name, json_object* action); + + int loadOneSource(json_object* sourcesJ); + static int loadSources(CtlSectionT* section, json_object *sectionJ); + + int loadOneSignal(json_object* signalsJ); + static int loadSignals(CtlSectionT* section, json_object *sectionJ); + + Source* getSource(const std::string& api); + +public: + static bindingApp& instance(); + void loadConfig(const std::string& filepath); + void loadSignalsFile(std::string signalsFile); + + std::vector> getAllSignals(); + CtlConfigT* ctlConfig(); +}; -- cgit 1.2.3-korg