chronon::sender::detail::InPortSelectiveFlushState
#include <Port.hpp>
Public Types
| Name | |
|---|---|
| using SelectiveFlushPredicate< T > | Predicate |
| using typename Predicate::KeyExtractor | KeyExtractor |
Public Functions
| Name | |
|---|---|
| bool | shouldCancel(const PortEnvelope< T > & message) const |
| void | retireBeforeArrival(uint64_t front_arrival, uint32_t max_incoming_delay, std::optional< uint64_t > producer_progress_floor) |
| void | install(uint64_t flush_cycle, FlushRange keep_range, KeyExtractor key_extractor) |
| bool | hasRetirementCandidate(uint64_t front_arrival, uint32_t max_incoming_delay) const |
| bool | empty() const |
| size_t | active_slot_count() const |
Public Attributes
| Name | |
|---|---|
| std::vector< Predicate > | slots |
| size_t | high_water High-water mark tracking for diagnostics (CHRONON_STAGE_TRACE). |
Detailed Description
template <typename T >
struct chronon::sender::detail::InPortSelectiveFlushState;
Receiver-owned active selective-flush predicates for an InPort.
Incoming messages are ordered by arrival cycle, not enqueue cycle. With heterogeneous MPSC delays enqueue cycles can regress, so retirement uses the queue's stable arrival frontier. A predicate for flush cycle F can only affect arrivals through F - 1 + max_incoming_delay. Once the next queue head is beyond that bound, epoch-free dependency progress proves that no producer can publish another affected message.
State is installed, evaluated, and retired exclusively by the destination Unit. There are no locks or atomics in this control plane.
Public Types Documentation
using Predicate
using chronon::sender::detail::InPortSelectiveFlushState< T >::Predicate = SelectiveFlushPredicate<T>;
using KeyExtractor
using chronon::sender::detail::InPortSelectiveFlushState< T >::KeyExtractor = typename Predicate::KeyExtractor;
Public Functions Documentation
function shouldCancel
inline bool shouldCancel(
const PortEnvelope< T > & message
) const
function retireBeforeArrival
inline void retireBeforeArrival(
uint64_t front_arrival,
uint32_t max_incoming_delay,
std::optional< uint64_t > producer_progress_floor
)
function install
inline void install(
uint64_t flush_cycle,
FlushRange keep_range,
KeyExtractor key_extractor
)
function hasRetirementCandidate
inline bool hasRetirementCandidate(
uint64_t front_arrival,
uint32_t max_incoming_delay
) const
function empty
inline bool empty() const
function active_slot_count
inline size_t active_slot_count() const
Public Attributes Documentation
variable slots
std::vector< Predicate > slots;
variable high_water
size_t high_water = 0;
High-water mark tracking for diagnostics (CHRONON_STAGE_TRACE).
Updated on 2026-07-18 at 10:20:16 +0000