chronon::sender::SingleThreadQueueAdapter
#include <MessageQueue.hpp>
Inherits from chronon::sender::IMessageQueue< T >
Public Functions
| Name | |
|---|---|
| virtual std::optional< T > | tryPop(uint64_t current_cycle) override |
| virtual size_t | storageCapacity() const override |
| virtual size_t | size() const override |
| virtual void | setCapacity(size_t capacity) override |
| virtual bool | push(T data, uint64_t arrive_cycle) override |
| virtual void | popAllInto(std::vector< T > & out, uint64_t current_cycle) override Reusable-buffer drain: avoids the fresh-vector allocation popAll() makes per call. |
| virtual std::vector< T > | popAll(uint64_t current_cycle) override |
| virtual std::optional< uint64_t > | minArrivalCycle() const override |
| virtual bool | hasReady(uint64_t current_cycle) const override |
| virtual bool | full() const override |
| virtual bool | empty() const override |
| virtual void | clear() override |
| virtual size_t | capacity() const override |
| virtual size_t | available() const override |
| virtual size_t | admissionOccupancy(uint64_t send_cycle) const override |
| virtual std::optional< uint64_t > | admissionMinArrivalCycle(uint64_t send_cycle) const override |
| SingleThreadQueueAdapter(size_t capacity =SingleThreadMessageQueue< T >::UNLIMITED_CAPACITY, bool cycle_strict_admission =false) |
Additional inherited members
Public Functions inherited from chronon::sender::IMessageQueue< T >
| Name | |
|---|---|
| virtual | ~IMessageQueue() =default |
Detailed Description
template <typename T >
class chronon::sender::SingleThreadQueueAdapter;
SingleThreadQueueAdapter - cycle-strict registered-edge storage without synchronization.
Epoch-free workers may temporarily skip an earlier local cluster while it waits on the shared lookahead floor, then execute a later cluster in the same worker sweep. A consumer pop at cycle C must therefore not become producer admission credit until C + 1 even though both Units are owned by one host thread. Consulting the live priority-queue size would make model backpressure depend on that wall-clock interleaving.
Bounded ports keep a ring of per-cycle pop summaries. Admission is the live queue size plus pops whose simulated cycle has not become credit yet. There are no atomics, locks, cache-line handoffs, push-side bookkeeping, or per-message allocations; the uncommon history expansion only occurs when a producer trails more distinct pop cycles than the small initialization reserve can retain. Unbounded ports bypass the ledger entirely.
Public Functions Documentation
function tryPop
inline virtual std::optional< T > tryPop(
uint64_t current_cycle
) override
Reimplements: chronon::sender::IMessageQueue::tryPop
function storageCapacity
inline virtual size_t storageCapacity() const override
Reimplements: chronon::sender::IMessageQueue::storageCapacity
function size
inline virtual size_t size() const override
Reimplements: chronon::sender::IMessageQueue::size
function setCapacity
inline virtual void setCapacity(
size_t capacity
) override
Reimplements: chronon::sender::IMessageQueue::setCapacity
function push
inline virtual bool push(
T data,
uint64_t arrive_cycle
) override
Reimplements: chronon::sender::IMessageQueue::push
function popAllInto
inline virtual void popAllInto(
std::vector< T > & out,
uint64_t current_cycle
) override
Reusable-buffer drain: avoids the fresh-vector allocation popAll() makes per call.
Reimplements: chronon::sender::IMessageQueue::popAllInto
function popAll
inline virtual std::vector< T > popAll(
uint64_t current_cycle
) override
Reimplements: chronon::sender::IMessageQueue::popAll
function minArrivalCycle
inline virtual std::optional< uint64_t > minArrivalCycle() const override
Reimplements: chronon::sender::IMessageQueue::minArrivalCycle
function hasReady
inline virtual bool hasReady(
uint64_t current_cycle
) const override
Reimplements: chronon::sender::IMessageQueue::hasReady
function full
inline virtual bool full() const override
Reimplements: chronon::sender::IMessageQueue::full
function empty
inline virtual bool empty() const override
Reimplements: chronon::sender::IMessageQueue::empty
function clear
inline virtual void clear() override
Reimplements: chronon::sender::IMessageQueue::clear
function capacity
inline virtual size_t capacity() const override
Reimplements: chronon::sender::IMessageQueue::capacity
function available
inline virtual size_t available() const override
Reimplements: chronon::sender::IMessageQueue::available
function admissionOccupancy
inline virtual size_t admissionOccupancy(
uint64_t send_cycle
) const override
Reimplements: chronon::sender::IMessageQueue::admissionOccupancy
function admissionMinArrivalCycle
inline virtual std::optional< uint64_t > admissionMinArrivalCycle(
uint64_t send_cycle
) const override
Reimplements: chronon::sender::IMessageQueue::admissionMinArrivalCycle
function SingleThreadQueueAdapter
inline explicit SingleThreadQueueAdapter(
size_t capacity =SingleThreadMessageQueue< T >::UNLIMITED_CAPACITY,
bool cycle_strict_admission =false
)
Updated on 2026-07-18 at 10:20:16 +0000