53 bool sample_loss_pending =
false;
54 bool over_range_pending =
false;
55 RealType last_context_time = -1.0e300;
58 [[
nodiscard]] StreamState& stateFor(std::uint32_t stream_id);
59 [[
nodiscard]]
const StreamState& stateFor(std::uint32_t stream_id)
const;
62 void emitTelemetry(std::vector<core::ReceiverOutputPacketTrace> packets = {},
bool force_stats =
false);
63 [[
nodiscard]] std::vector<core::ReceiverOutputPacketTrace> consumeSenderDropsLocked();
65 std::string event)
const;
68 void applyDropped(
const DroppedDatagram& dropped);
71 std::string _simulation_name;
73 std::unique_ptr<DatagramSender> _provided_sender;
74 StreamRegistry _registry;
75 std::unique_ptr<Vita49Packetizer> _packetizer;
76 std::unique_ptr<PacedSender> _sender;
77 std::unordered_map<std::uint32_t, StreamState> _streams;
78 mutable std::recursive_mutex _mutex;
79 std::chrono::steady_clock::time_point _last_stats_emit = std::chrono::steady_clock::time_point::min();
80 std::chrono::steady_clock::time_point _last_packet_trace_emit = std::chrono::steady_clock::time_point::min();
81 std::vector<core::ReceiverOutputPacketTrace> _pending_packet_traces;
82 std::uint64_t _trace_sequence = 0;
83 bool _initialized =
false;
84 bool _finalized =
false;