ZeroTierOne/nonfree/controller/ControllerChangeNotifier.cpp
Grant Limberg 012443acfa
Some checks failed
/ build_macos (push) Has been cancelled
/ build_windows (push) Has been cancelled
/ Central Controller Build (push) Has been cancelled
/ build_ubuntu (push) Has been cancelled
/ multi-arch-docker (push) Has been cancelled
wire up pubsub notifications from controller to frontend
2025-09-08 16:01:50 -07:00

52 lines
No EOL
1.6 KiB
C++

#include "ControllerChangeNotifier.hpp"
#include "PubSubWriter.hpp"
namespace ZeroTier {
PubSubChangeNotifier::PubSubChangeNotifier(std::string controllerID, std::string project)
: ControllerChangeNotifier()
, _cv1networkChangeWriter(std::make_shared<PubSubWriter>(project, "ctl-to-cv1-network-change-stream", controllerID))
, _cv1memberChangeWriter(std::make_shared<PubSubWriter>(project, "ctl-to-cv1-member-change-stream", controllerID))
, _cv2networkChangeWriter(std::make_shared<PubSubWriter>(project, "ctl-to-cv2-network-change-stream", controllerID))
, _cv2memberChangeWriter(std::make_shared<PubSubWriter>(project, "ctl-to-cv2-member-change-stream", controllerID))
{
}
PubSubChangeNotifier::~PubSubChangeNotifier()
{
}
void PubSubChangeNotifier::notifyNetworkChange(
const nlohmann::json& oldNetwork,
const nlohmann::json& newNetwork,
const std::string& frontend)
{
if (frontend == "cv1") {
_cv1networkChangeWriter->publishNetworkChange(oldNetwork, newNetwork);
}
else if (frontend == "cv2") {
_cv2networkChangeWriter->publishNetworkChange(oldNetwork, newNetwork);
}
else {
throw std::runtime_error("Unknown frontend: " + frontend);
}
}
void PubSubChangeNotifier::notifyMemberChange(
const nlohmann::json& oldMember,
const nlohmann::json newMember,
const std::string& frontend)
{
if (frontend == "cv1") {
_cv1memberChangeWriter->publishMemberChange(oldMember, newMember);
}
else if (frontend == "cv2") {
_cv2memberChangeWriter->publishMemberChange(oldMember, newMember);
}
else {
throw std::runtime_error("Unknown frontend: " + frontend);
}
}
} // namespace ZeroTier