PostgresStatusWriter.hpp 975 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef POSTGRES_STATUS_WRITER_HPP
  2. #define POSTGRES_STATUS_WRITER_HPP
  3. #include "PostgreSQL.hpp"
  4. #include "StatusWriter.hpp"
  5. #include <memory>
  6. #include <mutex>
  7. #include <string>
  8. #include <vector>
  9. namespace ZeroTier {
  10. class PostgresStatusWriter : public StatusWriter {
  11. public:
  12. PostgresStatusWriter(std::shared_ptr<ConnectionPool<PostgresConnection> > pool);
  13. virtual ~PostgresStatusWriter();
  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 unused */) override;
  23. virtual size_t queueLength() const override;
  24. virtual void writePending() override;
  25. private:
  26. std::shared_ptr<ConnectionPool<PostgresConnection> > _pool;
  27. mutable std::mutex _lock;
  28. std::vector<PendingStatusEntry> _pending;
  29. };
  30. } // namespace ZeroTier
  31. #endif // POSTGRES_STATUS_WRITER_HPP