|
@@ -110,6 +110,64 @@ bool CV2::isReady()
|
|
return (_ready == 2) && _connected;
|
|
return (_ready == 2) && _connected;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void CV2::_memberChanged(nlohmann::json& old, nlohmann::json& memberConfig, bool notifyListeners)
|
|
|
|
+{
|
|
|
|
+ auto provider = opentelemetry::trace::Provider::GetTracerProvider();
|
|
|
|
+ auto tracer = provider->GetTracer("cv2");
|
|
|
|
+ auto span = tracer->StartSpan("cv2::_memberChanged");
|
|
|
|
+ auto scope = tracer->WithActiveSpan(span);
|
|
|
|
+
|
|
|
|
+ if (memberConfig.is_object()) {
|
|
|
|
+ // member config change
|
|
|
|
+ const std::string ids = memberConfig["id"];
|
|
|
|
+ const uint64_t networkId = OSUtils::jsonIntHex(memberConfig["nwid"], 0ULL);
|
|
|
|
+ const uint64_t memberId = Utils::hexStrToU64(ids.c_str());
|
|
|
|
+ if ((networkId) && (memberId)) {
|
|
|
|
+ save(memberConfig, notifyListeners);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else if (old.is_object()) {
|
|
|
|
+ // member delete
|
|
|
|
+ const std::string ids = old["id"];
|
|
|
|
+ const uint64_t networkId = OSUtils::jsonIntHex(old["nwid"], 0ULL);
|
|
|
|
+ const uint64_t memberId = Utils::hexStrToU64(ids.c_str());
|
|
|
|
+ if ((networkId) && (memberId)) {
|
|
|
|
+ eraseMember(networkId, memberId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // fprintf(stderr, "CV2::_memberChanged\n");
|
|
|
|
+ DB::_memberChanged(old, memberConfig, notifyListeners);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void CV2::_networkChanged(nlohmann::json& old, nlohmann::json& networkConfig, bool notifyListeners)
|
|
|
|
+{
|
|
|
|
+ auto provider = opentelemetry::trace::Provider::GetTracerProvider();
|
|
|
|
+ auto tracer = provider->GetTracer("cv2");
|
|
|
|
+ auto span = tracer->StartSpan("cv2::_networkChanged");
|
|
|
|
+ auto scope = tracer->WithActiveSpan(span);
|
|
|
|
+
|
|
|
|
+ if (networkConfig.is_object()) {
|
|
|
|
+ // network config change
|
|
|
|
+ const std::string ids = networkConfig["id"];
|
|
|
|
+ const uint64_t networkId = Utils::hexStrToU64(ids.c_str());
|
|
|
|
+ if (networkId) {
|
|
|
|
+ save(networkConfig, notifyListeners);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else if (old.is_object()) {
|
|
|
|
+ // network delete
|
|
|
|
+ const std::string ids = networkConfig["id"];
|
|
|
|
+ const uint64_t networkId = Utils::hexStrToU64(ids.c_str());
|
|
|
|
+ if (networkId) {
|
|
|
|
+ eraseNetwork(networkId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // fprintf(stderr, "CV2::_networkChanged\n");
|
|
|
|
+ DB::_networkChanged(old, networkConfig, false);
|
|
|
|
+}
|
|
|
|
+
|
|
bool CV2::save(nlohmann::json& record, bool notifyListeners)
|
|
bool CV2::save(nlohmann::json& record, bool notifyListeners)
|
|
{
|
|
{
|
|
auto provider = opentelemetry::trace::Provider::GetTracerProvider();
|
|
auto provider = opentelemetry::trace::Provider::GetTracerProvider();
|