StatusWriter.hpp 944 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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() = default;
  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& target) = 0;
  23. virtual size_t queueLength() const = 0;
  24. virtual void writePending() = 0;
  25. };
  26. struct PendingStatusEntry {
  27. std::string network_id;
  28. std::string node_id;
  29. std::string os;
  30. std::string arch;
  31. std::string version;
  32. InetAddress address;
  33. int64_t last_seen;
  34. std::string target;
  35. };
  36. } // namespace ZeroTier
  37. #endif // STATUS_WRITER_HPP