Skip to main content

chronon::AutoRegisteredUnit

CRTP base that auto-registers Derived with SenderFactoryRegistry at program load. More...

#include <SenderFactory.hpp>

Inherits from chronon::sender::TickableUnit, chronon::sender::Unit

Public Functions

Name
AutoRegisteredUnit(std::string name)

Protected Functions

Name
AutoRegisteredUnit(std::string name, bool )
Tag overload for derived classes needing custom construction.

Additional inherited members

Public Functions inherited from chronon::sender::TickableUnit

Name
virtual~TickableUnit() =default
virtual voidtick() =0
Per-cycle behavior. Must complete synchronously.
virtual boolisCompleted() const
Return true to signal the simulation can stop.
voidexecuteTickAlwaysActive()
Hot path for units that have not opted into activity scheduling.
voidexecuteTick()
Inlined hot path executed millions of times per second.
voidadvanceIdleTick(uint64_t delta)
Batched inactive-cycle advance used when an entire cluster is idle.
TickableUnit(std::string name)

Protected Functions inherited from chronon::sender::TickableUnit

Name
template <ValidPhase P>
void
tickPhase()
voidrequestTermination(TerminationReason reason, int32_t exit_code =0, std::string_view message ="")
voidrequestTermination(TerminationReason reason, int32_t exit_code, uint64_t cycle, std::string_view message)
voidrequestExitSyscall(int32_t exit_code)
voidrequestError(std::string_view message)

Friends inherited from chronon::sender::TickableUnit

Name
classTickSimulation

Public Functions inherited from chronon::sender::Unit

Name
virtual~Unit() =default
voidwakeAt(uint64_t cycle)
Wake the unit no later than cycle. Safe for cross-thread producers.
boolusesActivityScheduling() const
voiduseFastCycleCounter()
Default mode. Eliminates atomic overhead (~80% of tight-loop time).
voiduseAtomicCycleCounter()
tree::TreeNode *treeNode() const
uint32_ttickInterval() const
UnitStatestate() const
voidsleepUntil(uint64_t cycle)
voidsleepForever()
Disable the tick body until an external wakeAt() or port arrival wakes it.
boolshouldRunTickAt(uint64_t cycle) const
voidsetTreeNode(tree::TreeNode * node)
Triggers registration of all pending ports to PortDirectory.
voidsetTickInterval(uint32_t interval)
voidregisterPort(PortBase * port)
const std::vector< PortBase * > &ports() const
Unit &operator=(const Unit & ) =delete
Unit &operator=(Unit && ) =delete
uint64_tnextRunnableCycleAtOrAfter(uint64_t cycle) const
uint64_tnextActiveCycle() const
const std::string &name() const
uint64_tlocalCycle() const
virtual voidinitialize()
Called after all connections are made, before run() starts.
uint32_tid() const
std::stringfullPath() const
Returns the tree path if a TreeNode is set, else the unit name.
virtual voidfinalize()
Called after run() completes or simulation is stopped.
voidenableActivityScheduling()
uint8_tcrashNameLen() const
const char *crashName() const
voidaddPendingPortRegistration(std::function< void(const std::string &)> registration)
boolacceptsPortWakeups() const
Unit(std::string name)
Unit(const Unit & ) =delete
Unit(Unit && ) =delete

Protected Functions inherited from chronon::sender::Unit

Name
voidsetLocalCycle(uint64_t cycle)
voidsetId(uint32_t id)
uint64_tlocalCycleAtomic() const
voidfinishActiveTick_()
voidbeginActiveTick_()
voidadvanceLocalCycle(uint64_t delta =1)
Fast path: ~0.3ns increment. Slow path (atomic): ~15ns.

Public Attributes inherited from chronon::sender::Unit

Name
uint64_tNEVER_ACTIVE

Friends inherited from chronon::sender::Unit

Name
classTickSimulation

Detailed Description

template <typename Derived >
class chronon::AutoRegisteredUnit;

CRTP base that auto-registers Derived with SenderFactoryRegistry at program load.

Derived must declare static unit_type_name / unit_description, a [ParameterSet](/docs/api/Classes/classchronon_1_1ParameterSet) type, a constructor accepting const ParameterSet*, and override [tick()](/docs/api/Classes/classchronon_1_1sender_1_1TickableUnit#function-tick) / [isCompleted()](/docs/api/Classes/classchronon_1_1sender_1_1TickableUnit#function-iscompleted).

Public Functions Documentation

function AutoRegisteredUnit

inline explicit AutoRegisteredUnit(
std::string name
)

Protected Functions Documentation

function AutoRegisteredUnit

inline AutoRegisteredUnit(
std::string name,
bool
)

Tag overload for derived classes needing custom construction.


Updated on 2026-07-06 at 09:03:34 +0000