diff options
-rw-r--r-- | signal-composer-binding/signal-composer.cpp | 10 | ||||
-rw-r--r-- | signal-composer-binding/signal.cpp | 47 | ||||
-rw-r--r-- | signal-composer-binding/signal.hpp | 4 | ||||
-rw-r--r-- | signal-composer-binding/source.cpp | 4 | ||||
-rw-r--r-- | signal-composer-binding/source.hpp | 2 |
5 files changed, 27 insertions, 40 deletions
diff --git a/signal-composer-binding/signal-composer.cpp b/signal-composer-binding/signal-composer.cpp index 535e85b..99129b4 100644 --- a/signal-composer-binding/signal-composer.cpp +++ b/signal-composer-binding/signal-composer.cpp @@ -220,8 +220,9 @@ int Composer::loadSourcesAPI(AFB_ApiT apihandle, CtlSectionT* section, json_obje int Composer::loadOneSignal(json_object* signalJ) { json_object *onReceivedJ = nullptr, - *dependsJ = nullptr, - *getSignalsArgs = nullptr; + *dependsJ = nullptr, + *metadataJ = nullptr, + *getSignalsArgs = nullptr; CtlActionT* onReceivedCtl; const char *id = nullptr, *event = nullptr, @@ -232,13 +233,14 @@ int Composer::loadOneSignal(json_object* signalJ) ssize_t sep; std::shared_ptr<SourceAPI> src = nullptr; - int err = wrap_json_unpack(signalJ, "{ss,s?s,s?o,s?o,s?i,s?s,s?F,s?o !}", + int err = wrap_json_unpack(signalJ, "{ss,s?s,s?o,s?o,s?i,s?s,s?o,s?F,s?o !}", "uid", &id, "event", &event, "depends", &dependsJ, "getSignalsArgs", &getSignalsArgs, "retention", &retention, "unit", &unit, + "metadata", &metadataJ, "frequency", &frequency, "onReceived", &onReceivedJ); if (err) @@ -335,7 +337,7 @@ int Composer::loadOneSignal(json_object* signalJ) else {onReceivedCtl = convert2Action(uid, onReceivedJ);} if(src != nullptr) - {src->addSignal(id, event, dependsV, retention, unit, frequency, onReceivedCtl, getSignalsArgs);} + {src->addSignal(id, event, dependsV, retention, unit, metadataJ, frequency, onReceivedCtl, getSignalsArgs);} else {err = -1;} diff --git a/signal-composer-binding/signal.cpp b/signal-composer-binding/signal.cpp index f248eae..2f1aa57 100644 --- a/signal-composer-binding/signal.cpp +++ b/signal-composer-binding/signal.cpp @@ -33,13 +33,14 @@ Signal::Signal() retention_(0), frequency_(0), unit_(""), + metadata_(nullptr), onReceived_(nullptr), getSignalsArgs_(nullptr), signalCtx_({nullptr, nullptr, nullptr, nullptr}), subscribed_(false) {} -Signal::Signal(const std::string& id, const std::string& event, std::vector<std::string>& depends, const std::string& unit, int retention, double frequency, CtlActionT* onReceived, json_object* getSignalsArgs) +Signal::Signal(const std::string& id, const std::string& event, std::vector<std::string>& depends, const std::string& unit, json_object *metadata, int retention, double frequency, CtlActionT* onReceived, json_object* getSignalsArgs) :id_(id), event_(event), dependsSigV_(depends), @@ -48,34 +49,16 @@ Signal::Signal(const std::string& id, const std::string& event, std::vector<std: retention_(retention), frequency_(frequency), unit_(unit), + metadata_(metadata), onReceived_(onReceived), getSignalsArgs_(getSignalsArgs), signalCtx_({nullptr, nullptr, nullptr, nullptr}), subscribed_(false) {} -Signal::Signal(const std::string& id, - std::vector<std::string>& depends, - const std::string& unit, - int retention, - double frequency, - CtlActionT* onReceived) -:id_(id), - event_(), - dependsSigV_(depends), - timestamp_(0.0), - value_(), - retention_(retention), - frequency_(frequency), - unit_(unit), - onReceived_(onReceived), - getSignalsArgs_(nullptr), - signalCtx_({nullptr, nullptr, nullptr, nullptr}), - subscribed_(false) -{} - Signal::~Signal() { + if(metadata_) json_object_put(metadata_); if(getSignalsArgs_) json_object_put(getSignalsArgs_); if(onReceived_) delete(onReceived_); } @@ -135,33 +118,35 @@ json_object* Signal::toJSON() const { ssize_t sep = src.find_first_of("/"); if(sep != std::string::npos) - { dependsSignalName.push_back(src.substr(sep+1)); - } } for (const std::string& lowSig: dependsSignalName) - { json_object_array_add(nameArrayJ, json_object_new_string(lowSig.c_str())); - } json_object_object_add(sigJ, "uid", json_object_new_string(id_.c_str())); json_object_object_add(sigJ, "getSignalsArgs", json_object_get(getSignalsArgs_)); if (!event_.empty()) - {json_object_object_add(sigJ, "event", json_object_new_string(event_.c_str()));} + json_object_object_add(sigJ, "event", json_object_new_string(event_.c_str())); if (json_object_array_length(nameArrayJ)) - {json_object_object_add(sigJ, "depends", nameArrayJ);} + json_object_object_add(sigJ, "depends", nameArrayJ); else - {json_object_put(nameArrayJ);} + json_object_put(nameArrayJ); + + if (!unit_.empty()) + json_object_object_add(sigJ, "unit", json_object_new_string(unit_.c_str())); - if (!unit_.empty()) {json_object_object_add(sigJ, "unit", json_object_new_string(unit_.c_str()));} + if (!metadata_) + json_object_object_add(sigJ, "metadata", json_object_get(metadata_)); - if (frequency_) {json_object_object_add(sigJ, "frequency", json_object_new_double(frequency_));} + if (frequency_) + json_object_object_add(sigJ, "frequency", json_object_new_double(frequency_)); - if(timestamp_) {json_object_object_add(sigJ, "timestamp", json_object_new_int64(timestamp_));} + if(timestamp_) + json_object_object_add(sigJ, "timestamp", json_object_new_int64(timestamp_)); if (value_.hasBool) {json_object_object_add(sigJ, "value", json_object_new_boolean(value_.boolVal));} else if (value_.hasNum) {json_object_object_add(sigJ, "value", json_object_new_double(value_.numVal));} diff --git a/signal-composer-binding/signal.hpp b/signal-composer-binding/signal.hpp index 091d060..0a12b16 100644 --- a/signal-composer-binding/signal.hpp +++ b/signal-composer-binding/signal.hpp @@ -85,6 +85,7 @@ private: int retention_; double frequency_; std::string unit_; + json_object* metadata_; CtlActionT* onReceived_; json_object* getSignalsArgs_; struct signalCBT signalCtx_; @@ -92,8 +93,7 @@ private: public: bool subscribed_; ///< subscribed_ - boolean value telling if yes or no the signal has been subcribed to the low level binding. Signal(); - Signal(const std::string& id, const std::string& event, std::vector<std::string>& depends, const std::string& unit, int retention, double frequency, CtlActionT* onReceived, json_object* getSignalsArgs); - Signal(const std::string& id, std::vector<std::string>& depends, const std::string& unit, int retention, double frequency, CtlActionT* onReceived); + Signal(const std::string& id, const std::string& event, std::vector<std::string>& depends, const std::string& unit, json_object *metadata, int retention, double frequency, CtlActionT* onReceived, json_object* getSignalsArgs); ~Signal(); explicit operator bool() const; diff --git a/signal-composer-binding/source.cpp b/signal-composer-binding/source.cpp index d7a5915..a46e766 100644 --- a/signal-composer-binding/source.cpp +++ b/signal-composer-binding/source.cpp @@ -67,9 +67,9 @@ const struct signalsDefault& SourceAPI::signalsDefault() const return signalsDefault_; } -void SourceAPI::addSignal(const std::string& id, const std::string& event, std::vector<std::string>& depends, int retention, const std::string& unit, double frequency, CtlActionT* onReceived, json_object* getSignalsArgs) +void SourceAPI::addSignal(const std::string& id, const std::string& event, std::vector<std::string>& depends, int retention, const std::string& unit, json_object *metadata, double frequency, CtlActionT* onReceived, json_object* getSignalsArgs) { - std::shared_ptr<Signal> sig = std::make_shared<Signal>(id, event, depends, unit, retention, frequency, onReceived, getSignalsArgs); + std::shared_ptr<Signal> sig = std::make_shared<Signal>(id, event, depends, unit, metadata, retention, frequency, onReceived, getSignalsArgs); newSignalsM_[id] = sig; } diff --git a/signal-composer-binding/source.hpp b/signal-composer-binding/source.hpp index 8dd18e5..6585d0c 100644 --- a/signal-composer-binding/source.hpp +++ b/signal-composer-binding/source.hpp @@ -47,7 +47,7 @@ public: void init(); std::string api() const; const struct signalsDefault& signalsDefault() const; - void addSignal(const std::string& id, const std::string& event, std::vector<std::string>& sources, int retention, const std::string& unit, double frequency, CtlActionT* onReceived, json_object* getSignalsArgs); + void addSignal(const std::string& id, const std::string& event, std::vector<std::string>& sources, int retention, const std::string& unit, json_object *metadata, double frequency, CtlActionT* onReceived, json_object* getSignalsArgs); void initSignals(); std::vector<std::shared_ptr<Signal>> getSignals() const; |