BigTableStatusWriter.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef BIGTABLESTATUSWRITER_HPP
  2. #define BIGTABLESTATUSWRITER_HPP
  3. #include "StatusWriter.hpp"
  4. #include <google/cloud/bigtable/table.h>
  5. #include <memory>
  6. #include <mutex>
  7. #include <string>
  8. namespace ZeroTier {
  9. class PubSubWriter;
  10. class BigTableStatusWriter : public StatusWriter {
  11. public:
  12. BigTableStatusWriter(
  13. const std::string& project_id,
  14. const std::string& instance_id,
  15. const std::string& table_id,
  16. std::shared_ptr<PubSubWriter> pubsubWriter);
  17. virtual ~BigTableStatusWriter();
  18. virtual void updateNodeStatus(
  19. const std::string& network_id,
  20. const std::string& node_id,
  21. const std::string& os,
  22. const std::string& arch,
  23. const std::string& version,
  24. const InetAddress& address,
  25. int64_t last_seen,
  26. const std::string& frontend) override;
  27. virtual size_t queueLength() const override;
  28. virtual void writePending() override;
  29. private:
  30. const std::string _project_id;
  31. const std::string _instance_id;
  32. const std::string _table_id;
  33. mutable std::mutex _lock;
  34. std::vector<PendingStatusEntry> _pending;
  35. std::shared_ptr<PubSubWriter> _pubsubWriter;
  36. google::cloud::bigtable::Table* _table;
  37. };
  38. } // namespace ZeroTier
  39. #endif