45class RecordingCoordinator :
public QObject
50 static constexpr auto kDrainInterval = std::chrono::milliseconds (100);
52 explicit RecordingCoordinator (QObject * parent =
nullptr);
53 ~RecordingCoordinator ()
override;
55 Q_DISABLE_COPY_MOVE (RecordingCoordinator)
63 structure::tracks::TrackUuid track_id,
64 units::sample_u32_t max_block_length) [[clang::blocking]];
71 void disarm_track (structure::tracks::TrackUuid track_id) [[clang::blocking]];
78 [[nodiscard]]
bool has_session (structure::tracks::TrackUuid track_id) const;
112 [[clang::nonblocking]];
133 structure::tracks::TrackUuid track_id,
151 using DrainResult = std::vector<
154 void publish_snapshot ();
156 bool drain_pending_deletion (DrainResult &ready);
167 std::atomic<Snapshot *> rt_snapshot_{
nullptr };
177 std::vector<std::unique_ptr<Snapshot>> pending_snapshot_deletion_;
178 std::vector<std::unique_ptr<Snapshot>> old_snapshots_;
181 std::unique_ptr<Impl> impl_;