Program Listing for File playback_control_request.hpp

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

#pragma once
#include <foxglove-c/foxglove-c.h>

#include <optional>
#include <string>

namespace foxglove {

enum class PlaybackCommand : uint8_t {
  Play = 0,
  Pause = 1,
};

struct PlaybackControlRequest {
public:
  PlaybackCommand playback_command;
  float playback_speed;
  std::optional<uint64_t> seek_time;
  std::string request_id;

  static PlaybackControlRequest from(
    const foxglove_playback_control_request& c_playback_control_request
  ) {
    return {
      static_cast<PlaybackCommand>(c_playback_control_request.playback_command),
      c_playback_control_request.playback_speed,
      c_playback_control_request.seek_time != nullptr
        ? std::optional<uint64_t>(*c_playback_control_request.seek_time)
        : std::nullopt,
      std::string(
        c_playback_control_request.request_id.data, c_playback_control_request.request_id.len
      )
    };
  }
};
}  // namespace foxglove