zerodds-corba-bridge v1.0 — Spec-Coverage
Quelle: docs/specs/zerodds-corba-bridge-1.0.md
§1 Conformance-Levels
§1 L1-L6 Conformance-Matrix
Spec: §1 — sechs Levels (Wire/DDS/Bridging/Config/Auth/Multi- Tenant); L1–L4 Pflicht, L5–L6 optional.
Repo: —
Tests: —
Status: n/a (informative)
§2 CLI-Surface
§2 zerodds-corba-bridged CLI
Spec: §2 — Optionen --config/--iiop-bind/--ssliop-bind/
--domain/--naming-service/--orb-id/--tls-*/--topic/
--log-level/--metrics/--version/--help; Exit-Codes 0/1/2/3/4/5.
Repo: crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs.
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs::version_flag_emits_one_line,
::unknown_arg_yields_exit_1,
::dump_iors_writes_stringified_ior,
::giop_request_yields_no_exception_reply.
Status: done
§3 Config-File-Format
§3 YAML-Loader mit ENV-Substitution
Spec: §3 — Top-Level domain/corba/mappings/acl/metrics;
ENV-Substitution.
Repo: crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs
(Config-Parser), crates/corba-dds-bridge/src/mapping.rs.
Tests: Inline #[cfg(test)] mod tests in mapping.rs;
bridge_e2e.rs::dump_iors_writes_stringified_ior.
Status: done
§4 GIOP/IIOP-Wire-Protocol
§4.1 IOR-Generation IIOP/SSLIOP/Components
Spec: §4.1 — IOR mit type_id/profile_count/IIOP-Profile (host/
port/object_key/Components Tag 0x06/0x20/0x21); Stringified-IOR-File +
NameService-Bind.
Repo: crates/corba-dds-bridge/src/wire.rs,
crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs.
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs::dump_iors_writes_stringified_ior.
Status: done
§4.2 GIOP-Frame-Format Header + Body
Spec: §4.2 — 12-Byte-Header (GIOP/major/minor/flags/msg_type)
+ message_size + CDR-Body; msg_type 0–7.
Repo: crates/corba-dds-bridge/src/wire.rs (GIOP-Codec),
crates/corba-dds-bridge/src/sync.rs.
Tests: Inline #[cfg(test)] mod tests in wire.rs;
bridge_e2e.rs::giop_request_yields_no_exception_reply.
Status: done
§4.3 Request-Reply-Mapping CORBA→DDS
Spec: §4.3 — Parse RequestHeader → Mapping-Lookup → CDR-decode →
DDS-Publish → korrelierte Reply → GIOP-Reply mit
reply_status=NO_EXCEPTION; Timeout → SYSTEM_EXCEPTION.
Repo: crates/corba-dds-bridge/src/sync.rs,
crates/corba-dds-bridge/src/servant.rs,
crates/corba-dds-bridge/src/mapping.rs.
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs::giop_request_yields_no_exception_reply.
Status: done
§4.4 Notify-Mapping DDS→CORBA
Spec: §4.4 — DDS-Sample → GIOP-Request gegen jeden Target-IOR; oneway/two-way.
Repo: crates/corba-dds-bridge/src/sync.rs,
crates/corba-dds-bridge/src/servant.rs,
crates/corba-dds-bridge/src/notify.rs (Cluster-C Notify-Mapping).
Tests: Inline #[cfg(test)] mod tests in notify.rs;
crates/corba-dds-bridge/tests/bridge_e2e.rs (Notify-One-Way-
Sequence via Cluster-C).
Status: done
§4.5 Object-Key-Generation SHA-256
Spec: §4.5 — object_key = SHA-256(repo_id + "\0" + canonical)[..16].
Repo: crates/corba-dds-bridge/src/wire.rs (object-key helper),
crates/corba-dds-bridge/src/mapping.rs.
Tests: Inline #[cfg(test)] mod tests in wire.rs/mapping.rs.
Status: done
§4.6 Fragment-Handling GIOP 1.1+
Spec: §4.6 — fragment_size-Cap, more_fragments=1-Flag, Re-
Assembly.
Repo: crates/corba-dds-bridge/src/wire.rs (Fragment-Codec),
delegiert an crates/corba-giop/ (Cluster-C Fragment-Wireup).
Tests: Inline #[cfg(test)] mod tests in wire.rs;
crates/corba-dds-bridge/tests/bridge_e2e.rs (Multi-Fragment-Message
> fragment_size via Cluster-C).
Status: done
§4.7 LocateRequest/Reply OBJECT_HERE/UNKNOWN/FORWARD
Spec: §4.7 — LocateReply mit OBJECT_HERE/UNKNOWN_OBJECT/
OBJECT_FORWARD (alternative-IOR).
Repo: crates/corba-dds-bridge/src/sync.rs (Locate-Handler),
crates/corba-dds-bridge/src/locate.rs (Cluster-C
LocateRequest/Reply Wireup).
Tests: Inline #[cfg(test)] mod tests in locate.rs;
crates/corba-dds-bridge/tests/bridge_e2e.rs (OBJECT_HERE/UNKNOWN/
FORWARD-Sequence via Cluster-C).
Status: done
§5 Topic-Mapping
§5.1 DDS-Topic-Slug per Operation
Spec: §5.1 — MarketData::Quote::request_quote::Request /
...::Reply Default; Override per request_topic.dds_name.
Repo: crates/corba-dds-bridge/src/mapping.rs.
Tests: Inline #[cfg(test)] mod tests in mapping.rs.
Status: done
§5.2 Type-Discovery via idl-rust Codegen
Spec: §5.2 — Per Mapping struct mit in/inout/out + request_id +
Result + Exception-Variant; IDL in /var/lib/zerodds/....
Repo: crates/corba-dds-bridge/src/mapping.rs (Type-Generation
Hook + Cluster-C IDL-Codegen-Wireup), abhängig von crates/idl-rust/.
Tests: Inline #[cfg(test)] mod tests in mapping.rs (Cluster-C
IDL-Codegen + Auto-Generated-Types).
Status: done
§6 QoS-Translation
§6 DDS-QoS → CORBA-Behavior Map
Spec: §6 — Reliability/Durability/Lifespan/Deadline/Liveliness/
Partition Map; BEST_EFFORT nur für Notify.
Repo: crates/corba-dds-bridge/src/mapping.rs,
crates/corba-dds-bridge/src/sync.rs,
crates/corba-dds-bridge/src/qos_translation.rs (Cluster-A QoS-Map
Reliability/Durability/Lifespan/Deadline/Liveliness/Partition).
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs::giop_request_yields_no_exception_reply
(reliable RR); QoS-Matrix in
crates/corba-dds-bridge/src/qos_translation.rs::tests.
Status: done
§7 Security
§7.1 SSLIOP TLS-over-IIOP + SSL-Component Tag 0x06
Spec: §7.1 — corba.ssliop.enabled aktiviert TLS; SSL-Component
mit target_supports/target_requires/port; SIGHUP-Cert-Rotation.
Repo: crates/corba-dds-bridge/src/wire.rs (SSL-Component-Tag),
crates/corba-dds-bridge/src/bridge_security.rs,
crates/bridge-security/src/tls.rs,
crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs
(SSLIOP-Bind).
Tests: crates/corba-dds-bridge/tests/security_e2e.rs (SSLIOP +
Cert-Rotation via Cluster-B-Foundation).
Status: done
§7.2 CSIv2 SAS_ContextElement + GSSUP
Spec: §7.2 — SAS_ContextElement, EstablishTrustInClient/Target,
GSSUP-User/Pass-Fallback.
Repo: delegiert an crates/corba-csiv2/,
crates/corba-dds-bridge/src/csiv2_wire.rs (Cluster-C
CSIv2-ServiceContext-Wireup),
crates/corba-dds-bridge/src/bridge_security.rs.
Tests: Inline #[cfg(test)] mod tests in csiv2_wire.rs;
crates/corba-dds-bridge/tests/security_e2e.rs (CSIv2 SAS +
GSSUP-Roundtrip via Cluster-C).
Status: done
§7.3 ACL pro Mapping
Spec: §7.3 — Subject = TLS-DN oder GSSUP-User; pro Mapping
allow_invoke-Liste.
Repo: crates/corba-dds-bridge/src/mapping.rs (ACL-Felder),
crates/corba-dds-bridge/src/bridge_security.rs,
crates/bridge-security/src/acl.rs.
Tests: crates/corba-dds-bridge/tests/security_e2e.rs (ACL-
Enforcement gegen Subject-Matrix via Cluster-B).
Status: done
§8 Operations + Observability
§8.1 Strukturiertes JSON-Logging
Spec: §8.1 — JSON-Log + --log-level-Switch.
Repo: crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs.
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs (log-level
implizit über Daemon-Spawn).
Status: done
§8.2 Prometheus-Metrics
Spec: §8.2 — --metrics-CLI + 10 Counter/Gauge-Familien
(requests/replies/pending/latency/timeouts/…).
Repo: crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs
(metrics-Bind),
crates/corba-dds-bridge/src/daemon_runtime.rs (Cluster-A Counter/
Gauge-Familien Wireup).
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs (/metrics-
Endpoint via Cluster-A-Wireup).
Status: done
§8.3 OTLP-Spans
Spec: §8.3 — OTEL_EXPORTER_OTLP_ENDPOINT aktiviert
GIOP-Exchange-Spans.
Repo: crates/corba-dds-bridge/src/daemon_runtime.rs (OTLP-Init
via zerodds-observability-otlp),
crates/corba-dds-bridge/src/sync.rs (Span-Emit pro GIOP-Exchange).
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs (Daemon-Spawn
mit OTEL_EXPORTER_OTLP_ENDPOINT).
Status: done
§9 Lifecycle
§9.1 Startup-Sequence
Spec: §9.1 — Config → TLS → DCPS → Mapping-Topic-Auto-Generation → IIOP/SSLIOP-Bind → NameService-Rebind → Signal-Handler.
Repo: crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs,
crates/corba-dds-bridge/src/sync.rs.
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs::giop_request_yields_no_exception_reply.
Status: done
§9.2 Shutdown SIGTERM/SIGINT/SIGHUP
Spec: §9.2 — Graceful Drain max 30 s, CloseConnection, NameService-Unbind; SIGHUP TLS+ACL-Reload.
Repo: crates/corba-dds-bridge/src/sync.rs,
crates/corba-dds-bridge/src/daemon_runtime.rs (SIGTERM/SIGINT/SIGHUP
via Cluster-A-Signal-Handler),
crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs.
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs (Daemon-Stop),
crates/corba-dds-bridge/tests/security_e2e.rs (SIGHUP-Reload TLS+
ACL).
Status: done
§10 Cross-Vendor
§10 RTPS-Peer + TAO/JacORB/omniORB/Ice-Java
Spec: §10 — Daemon ist normaler RTPS-Peer; CORBA-Seite gegen TAO/JacORB/omniORB/Ice-Java-CORBA-Compat.
Repo: crates/corba-dds-bridge/src/sync.rs.
Tests: crates/corba-dds-bridge/tests/cross_vendor.rs (Cluster-C
Cross-Vendor RTPS-Peer; TAO/JacORB/omniORB/Ice-Java-Matrix).
Status: done
§11 Packaging
§11 Linux/macOS/Windows/Docker Layout
Spec: §11 — Binary zerodds-corba-bridged; Configs/Services/Docker;
Manuals; IOR-Backup /var/lib/zerodds/corba-bridge/*.ior.
Repo: packaging/linux/systemd/zerodds-corba-bridged.service,
packaging/macos/launchd/org.zerodds.corba-bridged.plist,
packaging/macos/homebrew/zerodds-corba-bridge.rb,
packaging/windows/services/Install-Services.ps1,
packaging/docker/corba-bridged/,
packaging/linux/configs/corba-bridged.yaml.example,
man/man1/zerodds-corba-bridged.1,
man/man5/zerodds-corba-bridged.yaml.5.
Tests: —
Status: done
§12 Testing
§12.1 Unit-Tests pro Modul
Spec: §12.1 — config/giop_codec/iiop_transport/ior/object_key/ csiv2/dds_pump/request_correlator je ≥ 5 Tests.
Repo: crates/corba-dds-bridge/src/{wire.rs,sync.rs,servant.rs,mapping.rs} plus crates/corba-giop/, crates/corba-iiop/, crates/corba-csiv2/, crates/corba-ior/.
Tests: Inline #[cfg(test)] mod tests pro Modul.
Status: done
§12.2 Integration-Tests bridge_e2e
Spec: §12.2 — Spawn Daemon, TAO-Client (Docker), DDS-Service- Process, byte-genauer CDR-Roundtrip.
Repo: crates/corba-dds-bridge/src/bin/zerodds-corba-bridged.rs.
Tests: crates/corba-dds-bridge/tests/bridge_e2e.rs::giop_request_yields_no_exception_reply,
::dump_iors_writes_stringified_ior,
::version_flag_emits_one_line,
::unknown_arg_yields_exit_1.
Status: done
§12.3 Multi-Vendor cross_vendor.rs
Spec: §12.3 — Cyclone-DDS-Subscriber + TAO-Client + ZeroDDS- CORBA-Bridge im Compose.
Repo: crates/corba-dds-bridge/tests/cross_vendor.rs (Cluster-C
Cross-Vendor-Harness).
Tests: crates/corba-dds-bridge/tests/cross_vendor.rs (Cyclone-
DDS-Subscriber + TAO-Client).
Status: done
§13 Cross-References
§13 Verwandte Library + OMG-Specs + Daemons
Spec: §13 — Library crates/corba-{dds-bridge,iiop,giop}/,
crates/idl-rust/; OMG GIOP/IIOP/CSIv2/SSLIOP; Wire-Format;
Deployment.
Repo: —
Tests: —
Status: n/a (informative)
§14 Versioning
§14 SemVer-Bump-Regeln
Spec: §14 — Patch=Bugfixes, Minor=additive Mapping-Konfiguration, Major=Wire-Protocol-Changes.
Repo: —
Tests: —
Status: n/a (informative)
Audit-Status
25 done / 0 partial / 0 open / 3 n/a (informative) / 0 n/a (rejected).
Test-Lauf: cargo test -p zerodds-corba-dds-bridge — Tests grün, 0 failed.
Offene Punkte und Decision-Records: siehe zerodds-corba-bridge-1.0.open.md.