2
0

PubSubListener.hpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifdef ZT_CONTROLLER_USE_LIBPQ
  2. #ifndef ZT_CONTROLLER_PUBSUBLISTENER_HPP
  3. #define ZT_CONTROLLER_PUBSUBLISTENER_HPP
  4. #include "rustybits.h"
  5. #include <memory>
  6. #include <string>
  7. #include <thread>
  8. namespace ZeroTier {
  9. class PubSubListener {
  10. public:
  11. virtual ~PubSubListener()
  12. {
  13. }
  14. virtual void onNotification(const std::string& payload) = 0;
  15. };
  16. class PubSubNetworkListener : public PubSubListener {
  17. public:
  18. PubSubNetworkListener(const char* controller_id, uint64_t listen_timeout, rustybits::NetworkListenerCallback callback);
  19. virtual ~PubSubNetworkListener();
  20. virtual void onNotification(const std::string& payload) override;
  21. private:
  22. void listenThread();
  23. void changeHandlerThread();
  24. const rustybits::NetworkListener* _listener;
  25. std::thread _listenThread;
  26. std::thread _changeHandlerThread;
  27. };
  28. class PubSubMemberListener : public PubSubListener {
  29. public:
  30. PubSubMemberListener(const char* controller_id, uint64_t listen_timeout, rustybits::MemberListenerCallback callback);
  31. virtual ~PubSubMemberListener();
  32. virtual void onNotification(const std::string& payload) override;
  33. private:
  34. void listenThread();
  35. void changeHandlerThread();
  36. const rustybits::MemberListener* _listener;
  37. std::thread _listenThread;
  38. std::thread _changeHandlerThread;
  39. };
  40. } // namespace ZeroTier
  41. #endif // ZT_CONTROLLER_PUBSUBLISTENER_HPP
  42. #endif // ZT_CONTROLLER_USE_LIBPQ