17 #ifndef CYBER_TOOLS_CYBER_RECORDER_PLAYER_PLAY_TASK_CONSUMER_H_ 18 #define CYBER_TOOLS_CYBER_RECORDER_PLAYER_PLAY_TASK_CONSUMER_H_ 37 double play_rate = 1.0);
40 void Start(uint64_t begin_time_ns);
42 void Pause() { is_paused_.exchange(
true); }
43 void PlayOnce() { is_playonce_.exchange(
true); }
44 void Continue() { is_paused_.exchange(
false); }
49 return last_played_msg_real_time_ns_;
58 std::atomic<bool> is_stopped_;
59 std::atomic<bool> is_paused_;
60 std::atomic<bool> is_playonce_;
61 uint64_t begin_time_ns_;
62 uint64_t base_msg_play_time_ns_;
63 uint64_t base_msg_real_time_ns_;
64 uint64_t last_played_msg_real_time_ns_;
65 static const uint64_t kPauseSleepNanoSec;
66 static const uint64_t kWaitProduceSleepNanoSec;
67 static const uint64_t MIN_SLEEP_DURATION_NS;
74 #endif // CYBER_TOOLS_CYBER_RECORDER_PLAYER_PLAY_TASK_CONSUMER_H_ void PlayOnce()
Definition: play_task_consumer.h:43
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
virtual ~PlayTaskConsumer()
std::shared_ptr< PlayTaskBuffer > TaskBufferPtr
Definition: play_task_consumer.h:34
void Continue()
Definition: play_task_consumer.h:44
Definition: play_task_consumer.h:31
uint64_t last_played_msg_real_time_ns() const
Definition: play_task_consumer.h:48
std::unique_ptr< std::thread > ThreadPtr
Definition: play_task_consumer.h:33
uint64_t base_msg_play_time_ns() const
Definition: play_task_consumer.h:46
void Pause()
Definition: play_task_consumer.h:42
uint64_t base_msg_real_time_ns() const
Definition: play_task_consumer.h:47
PlayTaskConsumer(const TaskBufferPtr &task_buffer, double play_rate=1.0)
void Start(uint64_t begin_time_ns)