Skip to main content

chronon::sender::detail::InPortSelectiveFlushState

More...

#include <Port.hpp>

Public Types

Name
using SelectiveFlushPredicate< T >Predicate
using typename Predicate::KeyExtractorKeyExtractor

Public Functions

Name
boolshouldCancel(const PortEnvelope< T > & message) const
voidretireBeforeArrival(uint64_t front_arrival, uint32_t max_incoming_delay, std::optional< uint64_t > producer_progress_floor)
voidinstall(uint64_t flush_cycle, FlushRange keep_range, KeyExtractor key_extractor)
boolhasRetirementCandidate(uint64_t front_arrival, uint32_t max_incoming_delay) const
boolempty() const
size_tactive_slot_count() const

Public Attributes

Name
std::vector< Predicate >slots
size_thigh_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