Skip to main content

chronon::sender::Connection

More...

#include <Connection.hpp>

Inherits from chronon::sender::ConnectionBase

Public Types

Name
using typename SharedBroadcast::ViewSharedBroadcastView
using typename SharedBroadcast::ConsumerCursorSharedBroadcastCursor
using detail::SharedBroadcastTransport< T >SharedBroadcast

Public Functions

Name
booltransparentBroadcastEnabled() const
virtual booltransparentBroadcastEligible(size_t headroom_cycles) const override
booltransfer(T data, uint64_t send_cycle)
virtual size_ttransactionPushesAt(uint64_t cycle) const override
InPort< T > *to() const
virtual void *sourcePortPtr() const override
virtual std::string_viewsourcePortName() const override
virtual Unit *source() const override
SharedBroadcast *sharedBroadcastTransport()
size_tsharedBroadcastQueuedCount() const
SharedBroadcastCursor *sharedBroadcastCursor()
const std::atomic< uint64_t > *sharedBroadcastCancelBefore() const
virtual voidsetThreadQueueId(size_t queue_id) override
virtual voidsetDependencyOnlyTransport(bool enabled, size_t cross_thread_headroom =std::numeric_limits< size_t >::max()) override
virtual voidsetConnId(uint32_t conn_id) override
virtual size_tregisterProducerThread(size_t thread_id) override
virtual IMultiProducerPort *registerOnDestMPSC() override
virtual voidprepareRegisteredCapacity() override
voidpopSharedBroadcast(uint64_t sequence)
std::optional< SharedBroadcastView >peekSharedBroadcast() const
virtual voidoptimizeForSameThread(bool cycle_strict_admission =false) override
virtual voidoptimizeForSPSC() override
virtual voidoptimizeForMPSC() override
virtual size_tmodelHeadroom() const override
boolisDestinationFull() const
virtual boolhasThreadQueueId() const override
True if this connection uses thread-specific queue (MPSC mode).
OutPort< T > *from() const
voidflushSharedBroadcast()
virtual boolfinalizeTransparentBroadcastForDestination(size_t producer_count) override
virtual boolensureEpochFreeHeadroom(uint32_t max_lookahead_cycles) override
virtual boolenableTransparentBroadcastForSource(size_t headroom_cycles) override
virtual std::string_viewdestinationPortName() const override
virtual std::optional< size_t >destinationDepthOverride() const override
Explicit destination depth requested by this edge; fan-in requests must agree.
virtual Unit *destination() const override
virtual void *destPortPtr() const override
virtual booldependencyOnlyTransport() const override
virtual uint32_tdelay() const override
virtual size_tcrossThreadHeadroom() const override
virtual uint32_tconnId() const override
virtual voidconfigureRegisteredEdge(std::optional< size_t > capacity, std::optional< size_t > rate) override
virtual voidcancelInFlight() override
boolcanTransfer() const
True if the destination can accept data (back-pressure preflight).
voidattachTransparentBroadcast(SharedBroadcast * transport)
Connection(OutPort< T > * from, InPort< T > * to, uint32_t delay)

Friends

Name
classOutPort< T >

Additional inherited members

Public Functions inherited from chronon::sender::ConnectionBase

Name
virtual~ConnectionBase() =default
boolisTight() const
True if this is a zero-delay (tight) connection.

Detailed Description

template <typename T >
class chronon::sender::Connection;

Connection - Typed connection between OutPort and InPort.

Connections specify the communication delay:

  • delay=0: Tight coupling, same-cycle delivery on acyclic paths
  • delay>0: Loose coupling, future delivery (lookahead possible)

Usage: auto conn = sim.connect(producer->out, consumer->in, 5); // Messages sent at cycle N arrive at cycle N+5

Public Types Documentation

using SharedBroadcastView

using chronon::sender::Connection< T >::SharedBroadcastView = typename SharedBroadcast::View;

using SharedBroadcastCursor

using chronon::sender::Connection< T >::SharedBroadcastCursor = typename SharedBroadcast::ConsumerCursor;

using SharedBroadcast

using chronon::sender::Connection< T >::SharedBroadcast = detail::SharedBroadcastTransport<T>;

Public Functions Documentation

function transparentBroadcastEnabled

inline bool transparentBroadcastEnabled() const

function transparentBroadcastEligible

inline virtual bool transparentBroadcastEligible(
size_t headroom_cycles
) const override

Reimplements: chronon::sender::ConnectionBase::transparentBroadcastEligible

True when this edge can participate in the automatic delay-one shared-broadcast transport without changing model-visible semantics.

function transfer

inline bool transfer(
T data,
uint64_t send_cycle
)

Parameters:

  • data The data to transfer
  • send_cycle The current cycle when sending

Return: true if transfer succeeded, false if destination full (back pressure)

Transfer data through the connection.

The data will arrive at the destination port after the configured delay. Uses thread-specific queue if in multi-producer mode.

function transactionPushesAt

inline virtual size_t transactionPushesAt(
uint64_t cycle
) const override

Reimplements: chronon::sender::ConnectionBase::transactionPushesAt

Producer-owned pushes already claimed in cycle.

Port transactions use this cold-path view to detect an ordinary send through another OutPort owned by the same Unit. Every connection in the queried producer group has the same sole writer, so this remains a synchronization-free read of the existing per-cycle counter.

function to

inline InPort< T > * to() const

function sourcePortPtr

inline virtual void * sourcePortPtr() const override

Reimplements: chronon::sender::ConnectionBase::sourcePortPtr

function sourcePortName

inline virtual std::string_view sourcePortName() const override

Reimplements: chronon::sender::ConnectionBase::sourcePortName

function source

virtual Unit * source() const override

Reimplements: chronon::sender::ConnectionBase::source

function sharedBroadcastTransport

inline SharedBroadcast * sharedBroadcastTransport()

function sharedBroadcastQueuedCount

inline size_t sharedBroadcastQueuedCount() const

function sharedBroadcastCursor

inline SharedBroadcastCursor * sharedBroadcastCursor()

function sharedBroadcastCancelBefore

inline const std::atomic< uint64_t > * sharedBroadcastCancelBefore() const

function setThreadQueueId

inline virtual void setThreadQueueId(
size_t queue_id
) override

Parameters:

  • queue_id The queue ID for this connection

Reimplements: chronon::sender::ConnectionBase::setThreadQueueId

Set the thread queue ID for multi-producer mode.

Called during initialization when the destination InPort is in multi-producer mode.

function setDependencyOnlyTransport

inline virtual void setDependencyOnlyTransport(
bool enabled,
size_t cross_thread_headroom =std::numeric_limits< size_t >::max()
) override

Reimplements: chronon::sender::ConnectionBase::setDependencyOnlyTransport

Keep this edge in the scheduler dependency graph without transporting payloads. Intended for model-owned shared fabrics that carry data once while declared connections continue to describe ordering and delay. A finite cross_thread_headroom lets the scheduler constrain producer run-ahead to the external transport's storage.

function setConnId

inline virtual void setConnId(
uint32_t conn_id
) override

Reimplements: chronon::sender::ConnectionBase::setConnId

Stable connection identifier assigned at simulation build time.

Equal to this connection's index in TickSimulation::connections_. Used by MultiProducerQueueAdapter as a cross-num_workers-stable tiebreaker in the k-way merge, replacing the partition-dependent queue_id. The value is deterministic given a fixed topology, regardless of thread count / cluster assignment.

function registerProducerThread

inline virtual size_t registerProducerThread(
size_t thread_id
) override

Parameters:

Return: Queue ID for this producer key, or SIZE_MAX on failure

Reimplements: chronon::sender::ConnectionBase::registerProducerThread

Register a stable producer key for MPSC mode.

function registerOnDestMPSC

virtual IMultiProducerPort * registerOnDestMPSC() override

Reimplements: chronon::sender::ConnectionBase::registerOnDestMPSC

Register this MPSC connection on its destination InPort and return the InPort's type-erased MPSC metadata interface. TickSimulation uses it for progress-coverage and physical-overflow validation without knowing the Connection's message type. Returns nullptr outside MPSC mode.

function prepareRegisteredCapacity

inline virtual void prepareRegisteredCapacity() override

Reimplements: chronon::sender::ConnectionBase::prepareRegisteredCapacity

Finalize destination capacity after Unit::initialize(), before planning clusters or selecting adapters (including other edges of a fan-in).

function popSharedBroadcast

inline void popSharedBroadcast(
uint64_t sequence
)

function peekSharedBroadcast

inline std::optional< SharedBroadcastView > peekSharedBroadcast() const

function optimizeForSameThread

inline virtual void optimizeForSameThread(
bool cycle_strict_admission =false
) override

Reimplements: chronon::sender::ConnectionBase::optimizeForSameThread

Optimize destination port for same-thread access.

Switches InPort to use the synchronization-free SingleThreadMessageQueue. Call this during initialization when both source and destination are determined to be on the same worker. Epoch-free execution enables cycle-strict admission because separate local clusters can temporarily execute out of their normal sweep order.

This keeps intra-cluster registered edges on the cheapest storage.

function optimizeForSPSC

inline virtual void optimizeForSPSC() override

Reimplements: chronon::sender::ConnectionBase::optimizeForSPSC

Optimize destination port for cross-thread SPSC access.

Switches InPort to use lock-free LockFreeMessageQueue. Call this during initialization when there is exactly ONE source thread writing to the destination port on a different thread.

function optimizeForMPSC

inline virtual void optimizeForMPSC() override

Reimplements: chronon::sender::ConnectionBase::optimizeForMPSC

Optimize destination port for cross-thread MPSC access. Switches InPort to MultiProducerQueueAdapter with one producer queue per Connection.

function modelHeadroom

inline virtual size_t modelHeadroom() const override

Reimplements: chronon::sender::ConnectionBase::modelHeadroom

Placement-independent admission headroom. Zero requires one atomic cluster; SIZE_MAX leaves only physical transport constraints to check.

function isDestinationFull

inline bool isDestinationFull() const

function hasThreadQueueId

inline virtual bool hasThreadQueueId() const override

True if this connection uses thread-specific queue (MPSC mode).

Reimplements: chronon::sender::ConnectionBase::hasThreadQueueId

function from

inline OutPort< T > * from() const

function flushSharedBroadcast

inline void flushSharedBroadcast()

function finalizeTransparentBroadcastForDestination

virtual bool finalizeTransparentBroadcastForDestination(
size_t producer_count
) override

Reimplements: chronon::sender::ConnectionBase::finalizeTransparentBroadcastForDestination

Compile an eligible destination's complete delay-one fan-in into a direct replay plan after every source transport has been attached.

function ensureEpochFreeHeadroom

inline virtual bool ensureEpochFreeHeadroom(
uint32_t max_lookahead_cycles
) override

Reimplements: chronon::sender::ConnectionBase::ensureEpochFreeHeadroom

Try to grow physical lock-free buffers enough for epoch-free run-ahead when the model-visible registered edge is unbounded. A finite declared edge capacity is semantic backpressure and must not be bypassed by resizing the storage ring.

function enableTransparentBroadcastForSource

inline virtual bool enableTransparentBroadcastForSource(
size_t headroom_cycles
) override

Reimplements: chronon::sender::ConnectionBase::enableTransparentBroadcastForSource

Enable the shared transport for every connection owned by this edge's source OutPort. Called once per eligible source during initialize().

function destinationPortName

inline virtual std::string_view destinationPortName() const override

Reimplements: chronon::sender::ConnectionBase::destinationPortName

function destinationDepthOverride

inline virtual std::optional< size_t > destinationDepthOverride() const override

Explicit destination depth requested by this edge; fan-in requests must agree.

Reimplements: chronon::sender::ConnectionBase::destinationDepthOverride

function destination

virtual Unit * destination() const override

Reimplements: chronon::sender::ConnectionBase::destination

function destPortPtr

inline virtual void * destPortPtr() const override

Reimplements: chronon::sender::ConnectionBase::destPortPtr

function dependencyOnlyTransport

inline virtual bool dependencyOnlyTransport() const override

Reimplements: chronon::sender::ConnectionBase::dependencyOnlyTransport

function delay

inline virtual uint32_t delay() const override

Reimplements: chronon::sender::ConnectionBase::delay

function crossThreadHeadroom

inline virtual size_t crossThreadHeadroom() const override

Reimplements: chronon::sender::ConnectionBase::crossThreadHeadroom

Max producer run-ahead (in cycles) this connection's cross-thread buffer (direct MPSC lane or SPSC lock-free ring) can absorb while the epoch-free path keeps results identical to the reference: roughly threshold / rate - delay + 1, where threshold is the entry count at which transfer() stops accepting (the ring, or the InPort capacity if smaller), rate is the source's per-cycle send cap, and delay accounts for not-yet-due entries the consumer cannot drain. Returns SIZE_MAX for connections with neither bounded admission nor bounded transport and 0 when no finite capacity dependency is provably safe. Used to gate the epoch-free lookahead path, which removes the per-epoch drain.

function connId

inline virtual uint32_t connId() const override

Reimplements: chronon::sender::ConnectionBase::connId

function configureRegisteredEdge

inline virtual void configureRegisteredEdge(
std::optional< size_t > capacity,
std::optional< size_t > rate
) override

Reimplements: chronon::sender::ConnectionBase::configureRegisteredEdge

Configure the registered edge modeled by this connection. capacity is the number of entries the producer may have in flight on this edge; rate is the maximum entries this edge can accept per producer cycle.

function cancelInFlight

inline virtual void cancelInFlight() override

Reimplements: chronon::sender::ConnectionBase::cancelInFlight

Cancel all in-flight messages previously sent on this connection.

Only bumps the cancellation epoch. Published entries carry the previous snapshot and are discarded lazily by the receiver; new entries carry the new epoch. No queue mutation crosses producer/consumer ownership.

function canTransfer

inline bool canTransfer() const

True if the destination can accept data (back-pressure preflight).

function attachTransparentBroadcast

inline void attachTransparentBroadcast(
SharedBroadcast * transport
)

function Connection

inline Connection(
OutPort< T > * from,
InPort< T > * to,
uint32_t delay
)

Parameters:

  • from Source output port
  • to Destination input port
  • delay Number of cycles for message delivery

Create a connection with specified delay.

Friends

friend OutPort< T >

friend class OutPort< T >(
OutPort< T >
);

Updated on 2026-09-20 at 14:23:39 +0000