StatusWriter.hpp 885 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifndef STATUS_WRITER_HPP
  2. #define STATUS_WRITER_HPP
  3. #include "../node/InetAddress.hpp"
  4. #include <string>
  5. namespace ZeroTier {
  6. /**
  7. * Abstract interface for writing status information somewhere.
  8. *
  9. * Implementations might write to a database, a file, or something else.
  10. */
  11. class StatusWriter {
  12. public:
  13. virtual ~StatusWriter() = 0;
  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) = 0;
  22. virtual size_t queueLength() const = 0;
  23. virtual void writePending() = 0;
  24. };
  25. struct PendingStatusEntry {
  26. std::string network_id;
  27. std::string node_id;
  28. std::string os;
  29. std::string arch;
  30. std::string version;
  31. InetAddress address;
  32. int64_t last_seen;
  33. };
  34. } // namespace ZeroTier
  35. #endif // STATUS_WRITER_HPP