ControllerChangeNotifier.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include "ControllerChangeNotifier.hpp"
  2. #include "PubSubWriter.hpp"
  3. namespace ZeroTier {
  4. PubSubChangeNotifier::PubSubChangeNotifier(std::string controllerID, std::string project)
  5. : ControllerChangeNotifier()
  6. , _cv1networkChangeWriter(std::make_shared<PubSubWriter>(project, "ctl-to-cv1-network-change-stream", controllerID))
  7. , _cv1memberChangeWriter(std::make_shared<PubSubWriter>(project, "ctl-to-cv1-member-change-stream", controllerID))
  8. , _cv2networkChangeWriter(std::make_shared<PubSubWriter>(project, "ctl-to-cv2-network-change-stream", controllerID))
  9. , _cv2memberChangeWriter(std::make_shared<PubSubWriter>(project, "ctl-to-cv2-member-change-stream", controllerID))
  10. {
  11. }
  12. PubSubChangeNotifier::~PubSubChangeNotifier()
  13. {
  14. }
  15. void PubSubChangeNotifier::notifyNetworkChange(
  16. const nlohmann::json& oldNetwork,
  17. const nlohmann::json& newNetwork,
  18. const std::string& frontend)
  19. {
  20. if (frontend == "cv1") {
  21. _cv1networkChangeWriter->publishNetworkChange(oldNetwork, newNetwork);
  22. }
  23. else if (frontend == "cv2") {
  24. _cv2networkChangeWriter->publishNetworkChange(oldNetwork, newNetwork);
  25. }
  26. else {
  27. throw std::runtime_error("Unknown frontend: " + frontend);
  28. }
  29. }
  30. void PubSubChangeNotifier::notifyMemberChange(
  31. const nlohmann::json& oldMember,
  32. const nlohmann::json newMember,
  33. const std::string& frontend)
  34. {
  35. if (frontend == "cv1") {
  36. _cv1memberChangeWriter->publishMemberChange(oldMember, newMember);
  37. }
  38. else if (frontend == "cv2") {
  39. _cv2memberChangeWriter->publishMemberChange(oldMember, newMember);
  40. }
  41. else {
  42. throw std::runtime_error("Unknown frontend: " + frontend);
  43. }
  44. }
  45. } // namespace ZeroTier