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;