Program Listing for File system_info.hpp

Return to documentation for file (foxglove/include/foxglove/system_info.hpp)

#pragma once

#include <foxglove-c/foxglove-c.h>
#include <foxglove/context.hpp>
#include <foxglove/error.hpp>
#include <foxglove/expected.hpp>

#include <chrono>
#include <memory>
#include <optional>
#include <string>

namespace foxglove {

struct SystemInfoOptions final {
  Context context;

  std::optional<std::string> topic;

  std::optional<std::chrono::milliseconds> refresh_interval;
};

class SystemInfoPublisher final {
public:
  static FoxgloveResult<SystemInfoPublisher> create(SystemInfoOptions&& options = {});

  FoxgloveError stop() noexcept;

private:
  explicit SystemInfoPublisher(foxglove_system_info_publisher* impl);

  std::unique_ptr<
    foxglove_system_info_publisher, foxglove_error (*)(foxglove_system_info_publisher*)>
    impl_;
};

}  // namespace foxglove