Skip to main content

chronon::sender::IMultiProducerPort

More...

#include <Port.hpp>

Inherited by chronon::sender::InPort< T >

Public Functions

Name
virtual~IMultiProducerPort() =default
virtual uint64_ttransportOverflowEvents() const
uint64_tstagingOverflowEvents() const
Backward-compatible name retained for diagnostics clients.
virtual voidsetProducerProgress(const std::unordered_map< Unit *, const std::atomic< uint64_t > * > & )
voidsetArbitrationConnProgress(const std::unordered_map< Unit *, const std::atomic< uint64_t > * > & src_progress)
virtual boolproducerProgressFullyResolved() const
boolmpscConnProgressFullyResolved() const

Detailed Description

class chronon::sender::IMultiProducerPort;

IMultiProducerPort - type-erased MPSC metadata interface.

Payload arbitration disappeared with direct per-Connection SPSC lanes: the receiver merges lane heads when it reads the InPort. The scheduler retains this narrow interface only to prove producer-progress coverage and surface a physical-ring overflow as a correctness failure.

Public Functions Documentation

function ~IMultiProducerPort

virtual ~IMultiProducerPort() =default

function transportOverflowEvents

inline virtual uint64_t transportOverflowEvents() const

Reimplemented by: chronon::InPort::transportOverflowEvents, chronon::sender::InPort::transportOverflowEvents

Number of direct-lane pushes rejected by the physical ring. Nonzero means scheduler run-ahead exceeded provisioned transport storage.

function stagingOverflowEvents

inline uint64_t stagingOverflowEvents() const

Backward-compatible name retained for diagnostics clients.

function setProducerProgress

inline virtual void setProducerProgress(
const std::unordered_map< Unit *, const std::atomic< uint64_t > * > &
)

Reimplemented by: chronon::InPort::setProducerProgress, chronon::sender::InPort::setProducerProgress

Install PER-CONNECTION producer completed_cycle atomics for src_progress maps each producer Unit* to its cluster's completed-cycle publication. The InPort resolves one atomic per direct lane. The epoch-free scheduler requires complete coverage before allowing clusters to run independently.

function setArbitrationConnProgress

inline void setArbitrationConnProgress(
const std::unordered_map< Unit *, const std::atomic< uint64_t > * > & src_progress
)

function producerProgressFullyResolved

inline virtual bool producerProgressFullyResolved() const

Reimplemented by: chronon::InPort::producerProgressFullyResolved, chronon::sender::InPort::producerProgressFullyResolved

True iff every MPSC lane has a resolved producer-progress atomic. An unresolved lane vetoes epoch-free execution. Conservative default: false.

function mpscConnProgressFullyResolved

inline bool mpscConnProgressFullyResolved() const

Updated on 2026-07-17 at 17:43:31 +0000