Skip to main content

chronon::sender::factory::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.
voidexecuteTick()
Inlined hot path executed millions of times per second.
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
voiduseFastCycleCounter()
Default mode. Eliminates atomic overhead (~80% of tight-loop time).
voiduseAtomicCycleCounter()
tree::TreeNode *treeNode() const
UnitStatestate() const
voidsetTreeNode(tree::TreeNode * node)
Triggers registration of all pending ports to PortDirectory.
voidregisterPort(PortBase * port)
const std::vector< PortBase * > &ports() const
Unit &operator=(const Unit & ) =delete
Unit &operator=(Unit && ) =delete
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.
uint8_tcrashNameLen() const
const char *crashName() const
voidaddPendingPortRegistration(std::function< void(const std::string &)> registration)
Unit(std::string name)
Unit(const Unit & ) =delete
Unit(Unit && ) =delete

Protected Functions inherited from chronon::sender::Unit

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

Friends inherited from chronon::sender::Unit

Name
classTickSimulation

Detailed Description

template <typename Derived >
class chronon::sender::factory::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-05-26 at 05:42:32 +0000