83 : source_{source}, ring_{ring}
102 void start() noexcept;
109 void stop() noexcept;
113 return running_.load(std::memory_order_acquire);
128 void run_loop() noexcept;
133 std::atomic<
bool> running_{
false};
134 std::atomic<bool> stop_requested_{
false};
136 TickIngesterCounters counters_{};
Lock-free single-producer / single-consumer ring buffer.
Ingestion thread owner. Non-copyable, non-movable.
TickIngester & operator=(const TickIngester &)=delete
bool running() const noexcept
Whether the ingestion thread is currently running.
TickIngester & operator=(TickIngester &&)=delete
SPSCRing< OHLCVTick, RING_SIZE > Ring
TickIngester(const TickIngester &)=delete
~TickIngester() noexcept
Destructor: ensures the thread is stopped and joined.
TickIngester(TickIngester &&)=delete
void stop() noexcept
Signal the ingestion thread to stop and wait for it to finish.
TickIngesterCounters counters() const noexcept
Snapshot of ingestion counters.
static constexpr std::size_t RING_SIZE
void start() noexcept
Launch the ingestion thread.
TickIngester(TickSource &source, Ring &ring) noexcept
Construct bound to a source and a ring buffer.
Abstract source of raw OHLCVTick values.
Lock-free Single-Producer / Single-Consumer ring buffer.
Diagnostic counters for the ingestion thread.
std::uint64_t ticks_dropped_ring_full
Dropped: ring was full.
std::uint64_t ticks_received
Raw ticks read from source.
std::uint64_t ticks_dropped_invalid
Dropped: failed tick_is_valid().
std::uint64_t ticks_pushed
Valid ticks pushed to ring.
OHLCVTick — atomic market data unit for the lock-free streaming pipeline.
Abstract tick source interface + concrete implementations.