Crosscutting concepts¶
arc42 §8.
These concepts cut across building blocks and runtime scenarios.
Every connector instance is parameterised on its |
No silent failures: every error class is either returned to the
user or emitted as a |
The gateway is a taktora-executor consumer (Plugin and gateway are both... (ADR_0007)), so
|
Four bounded buffers participate; saturation surfaces explicitly at
each. The framework never silently drops outbound user messages;
inbound is protocol-bounded — drops are reported via
flowchart LR
U[user code] -->|send| W[ChannelWriter]
W -->|loan/publish| SHM["iceoryx2 SHM<br/>(bounded queue)"]
SHM -->|wakes| GI[GatewayItem]
GI -->|try_send| BR1["Tokio bridge OUT<br/>(bounded mpsc)"]
BR1 --> TT[Tokio task]
TT -->|publish| B[Broker]
B -->|publish| TT
TT -->|send| BR2["Tokio bridge IN<br/>(bounded crossbeam)"]
BR2 -->|wakes| GI2[InboundGatewayItem]
GI2 -->|loan/publish| SHM2["iceoryx2 SHM<br/>(bounded queue)"]
SHM2 --> R[ChannelReader]
|
Cross-cutting traceability¶
ID |
Title |
Status |
Implements |
|---|---|---|---|
taktora-connector-core |
open |
||
taktora-connector-transport-iox |
open |
||
taktora-connector-codec |
open |
||
taktora-connector-mqtt |
open |
||
taktora-connector-host |
open |
||
ConnectorEnvelope (sub-block of BB_0002) |
open |
||
ServiceFactory (sub-block of BB_0002) |
open |
||
MqttConnector (sub-block of BB_0004, plugin side) |
open |
||
MqttGateway (sub-block of BB_0004, gateway side) |
open |
||
Tokio bridge (sub-block of BB_0021) |
open |
||
Dispatch scratch (pre-allocated) |
open |
||
taktora-bounded-alloc crate |
open |
||
Cyclic scan trigger and dispatch |
implemented |
||
Iceoryx2 channel surface (Channel / Publisher / Subscriber) |
implemented |
||
Chain and DAG sequencing primitives |
implemented |
||
Deadline trigger and timing monitor |
implemented |
||
ThreadAttributes (worker affinity and priority) |
implemented |
||
taktora-connector-ethercat |
open |
||
EthercatConnector (sub-block of BB_0030, plugin side) |
open |
||
EthercatGateway (sub-block of BB_0030, gateway side) |
open |
||
PDO mapping (sub-block of BB_0030) |
open |
||
Tokio bridge for ethercrab (sub-block of BB_0030) |
open |
||
Cooperative shutdown (Stoppable + WaitSet stop wakeup) |
implemented |
||
taktora-connector-zenoh |
open |
||
ZenohConnector (sub-block of BB_0040, plugin side) |
open |
||
ZenohGateway (sub-block of BB_0040, gateway side) |
open |
||
Zenoh query handles (sub-block of BB_0041) |
open |
||
Tokio bridge for zenoh (sub-block of BB_0042) |
open |
||
Per-task cycle statistics |
open |
||
Statistics snapshot view |
open |
||
xtask-preempt-rt harness |
open |
||
taktora-stats crate |
open |
||
Connector cycle telemetry |
open |
||
ethercat-esi (parser crate) |
open |
||
ethercat-esi-codegen (IR + backend trait) |
open |
||
ethercat-esi-codegen-ethercrab (concrete backend) |
open |
||
ethercat-esi-rt (runtime trait crate) |
open |
||
ethercat-esi-build (build.rs glue) |
open |
||
ethercat-esi-cli (cargo subcommand) |
open |
||
ethercat-esi-verify (EEPROM diff tool) |
open |
||
taktora-connector-ethercat EsiDevice adapter |
open |
||
taktora-connector-can crate |
open |
||
CanConnector (sub-block of BB_0070, plugin side) |
open |
||
CanGateway (sub-block of BB_0070, gateway side) |
open |
REQ_0613; REQ_0614; REQ_0620; REQ_0624; REQ_0625; REQ_0630; REQ_0631 |
|
Tokio bridge for CAN (sub-block of BB_0072) |
open |
||
Per-iface filter compiler (sub-block of BB_0072) |
open |
||
MockCanInterface (sub-block of BB_0070) |
open |
||
fieldbus-od-core |
open |
||
canopen-eds parser crate |
open |
||
canopen-eds-codegen |
open |
||
canopen-eds-codegen-taktora |
open |
||
canopen-eds-rt |
open |
||
canopen-eds-build |
open |
||
canopen-eds-cli |
open |
||
canopen-eds-verify |
open |
||
taktora-connector-can adapter (follow-on) |
open |
||
taktora-log facade crate |
open |
||
taktora-log-dlt DLT-backend crate |
open |
||
DLT daemon client (within taktora-log-dlt) |
open |
||
Cycle-overrun fault primitive surface |
implemented |
||
Framework fail-fast boundary |
open |
||
Absolute-grid timer and cyclic scheduling clock |
implemented |
||
ethercat-netcfg SM-watchdog resolution and validation |
open |
ID |
Title |
Status |
Refines |
|---|---|---|---|
System context |
open |
||
Level-1 building block decomposition |
open |
BB_0001; BB_0002; BB_0003; BB_0004; BB_0005; BB_0030; BB_0040 |
|
Send path (app → broker) |
open |
||
Receive path (broker → app) |
open |
||
Health and reconnect lifecycle |
open |
||
Shutdown coordination |
open |
||
In-process gateway deployment |
open |
||
Separate-process gateway deployment |
open |
||
Codec — compile-time generic |
open |
||
Error handling — single error type, explicit origins |
open |
||
Observability — Observer + ExecutionMonitor adapter |
open |
||
Back-pressure — explicit at every bounded buffer |
open |
||
EtherCAT bus bring-up sequence |
open |
||
Cyclic process-data exchange and working-counter health |
open |
||
Optional Distributed Clocks bring-up |
open |
||
Zenoh query request/response flow |
open |
||
Toolchain layering (crate dependency graph) |
open |
||
Build-time vs runtime separation |
open |
||
Build-time generation flow |
open |
||
Preop bring-up flow (per device) |
open |
||
Toolchain crate placement in workspace |
open |
||
CAN frame send path (app → bus) |
open |
||
CAN receive path with multi-iface demux |
open |
||
CAN bus health and bus-off recovery |
open |
||
Toolchain layering (crate dependency graph) |
open |
||
Build-time vs runtime separation |
open |
||
Logging runtime data flow |
open |
||
Logging control-plane (runtime level changes) |
open |