BigTableStatusWriter.hpp 1002 B

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