BigTableStatusWriter.hpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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(const std::string& project_id, const std::string& instance_id, const std::string& table_id);
  13. virtual ~BigTableStatusWriter();
  14. virtual void updateNodeStatus(
  15. const std::string& network_id,
  16. const std::string& node_id,
  17. const std::string& os,
  18. const std::string& arch,
  19. const std::string& version,
  20. const InetAddress& address,
  21. int64_t last_seen,
  22. const std::string& frontend) override;
  23. virtual size_t queueLength() const override;
  24. virtual void writePending() override;
  25. private:
  26. const std::string _project_id;
  27. const std::string _instance_id;
  28. const std::string _table_id;
  29. mutable std::mutex _lock;
  30. std::vector<PendingStatusEntry> _pending;
  31. google::cloud::bigtable::Table* _table;
  32. };
  33. } // namespace ZeroTier
  34. #endif