From 2f5ce5596768041024308d8e11815f6b807d19de Mon Sep 17 00:00:00 2001 From: Codex Date: Tue, 16 Jun 2026 21:09:02 +0200 Subject: [PATCH] =?UTF-8?q?M5:=20implement=20real=20Iceoryx2Sink=20?= =?UTF-8?q?=E2=80=94=20iceoryx2=200.9.1=20production=20plane=20sink?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the stub that returned Err(Unimplemented) with a working iceoryx2 publish-subscribe sink. Key design: - One iceoryx2 pub/sub service per configured stream at {prefix}/{stream} - Fixed-size [u8] samples with in-band binary header (seq, src_ts_us, ts_us, NUL-padded key(48), len(32), value(N)) — no unsafe repr(packed) needed - Heartbeat stream at {prefix}/hzbridge_heartbeat with same layout - Uses BackpressureStrategy::DiscardData to avoid blocking the feeder - Uses ipc_threadsafe::Service so the Publisher is Send (ipc::Service uses SingleThreaded sync which is !Send) - Daemon builds Iceoryx2Sink by default; --allow-null-sink for dev use only Constraint compliance: C1 — no unsafe (crate-root forbid(unsafe_code) enforced by compiler) C2 — no async (all iceoryx2 calls synchronous) C5 — iceoryx2 0.9.1 already pinned per ADR-001 C8 — fixed-size samples, pre-allocated publishers, bounded loan slots Co-authored-by: CommandCodeBot