OMG CORBAservices: Event Service v1.2 — Spec-Coverage (WP COS-EventService)

Quelle: OMG CORBA Event Service v1.2 — formal/04-10-02, Oktober 2004, 65 Seiten. Ablage: docs/standards/cache/omg/event-service-1.4.pdf.

Hinweis Filename-Versionierung: Der Spec-Coverage-Filename trägt historisch das Suffix 1.4, die OMG-veröffentlichte Spec ist v1.2 (es gibt keine 1.3 / 1.4 publiziert). Filename bleibt aus Diff-/Referenz-Stabilität erhalten; Spec-Versionsangabe oben ist maßgeblich.

Folgt dem Format aus docs/spec-coverage/PROCESS.md.

Kontext. Der CORBA Event Service ist Voraussetzung für den TimerEventService aus omg-time-1.1.md §2.2-§2.4 (TimerEventService arbeitet mit CosEventChannelAdmin::EventChannel-Push-Channels) und liefert das Event-Backend für die Event-Ports im CCM-Komponentenmodell (siehe corba-3.3.md Part 3 §6.7).

Crate-Mapping:

Spec-Modul Crate-File
§2.1 CosEventComm crates/corba-cos-event/src/comm.rs
§2.3 CosEventChannelAdmin crates/corba-cos-event/src/channel.rs
§2.5/§2.7 Typed Event crates/corba-cos-event/src/typed.rs
§3 Lightweight Event Service — (open)

§1 Service Description

§1.1 Overview / §1.2 Event Communication / §1.3 Example Scenario

Spec: §1.1-§1.3, S. 1-1 bis 1-3 — Architektur-Überblick, Beispiel.

Repo:

Tests:

Status: n/a (informative)

§1.4 Design Principles / §1.5 Resolution of Technical Issues / §1.6 Quality of Service

Spec: §1.4-§1.6, S. 1-4 bis 1-6 — Design-Diskussion.

Repo:

Tests:

Status: n/a (informative)

§1.7 Generic Event Communication

Spec: §1.7, S. 1-7 — Push-/Pull-Modell-Einführung (informativ; normative Definitionen folgen in §2.1).

Repo:

Tests:

Status: n/a (informative)


§2 Modules and Interfaces

§2.1 The CosEventComm Module

Spec: §2.1, S. 2-1 — IDL-Modul CosEventComm mit den vier Basis- Interfaces.

Repo: crates/corba-cos-event/src/comm.rs (Trait-Definitionen PushConsumer, PushSupplier, PullSupplier, PullConsumer; Helper-Typ AnyEvent als payload-agnostischer Container; Error Disconnected und ConnectError).

Tests: Inline-Tests in crates/corba-cos-event/src/comm.rs.

Status: done

§2.1.1 The PushConsumer Interface

Spec: §2.1.1 — interface PushConsumer { void push(in any data) raises (Disconnected); void disconnect_push_consumer(); };.

Repo: comm.rs Trait PushConsumer mit push(&AnyEvent) -> Result<(), Disconnected> + disconnect().

Tests: Inline.

Status: done

§2.1.2 The PushSupplier Interface

Spec: §2.1.2 — interface PushSupplier { void disconnect_push_supplier(); };.

Repo: comm.rs Trait PushSupplier.

Tests: Inline.

Status: done

§2.1.3 The PullSupplier Interface

Spec: §2.1.3 — pull()/try_pull()/disconnect_pull_supplier().

Repo: comm.rs Trait PullSupplier.

Tests: Inline.

Status: done

§2.1.4 The PullConsumer Interface

Spec: §2.1.4 — disconnect_pull_consumer().

Repo: comm.rs Trait PullConsumer.

Tests: Inline.

Status: done

§2.1.5 Disconnection Behavior

Spec: §2.1.5 — Disconnection-Lifecycle, Disconnected-Exception beim Aufruf nach disconnect.

Repo: comm.rs Error-Typ Disconnected + Disconnect-Pfade in den Proxy-Implementations (channel.rs).

Tests: Inline.

Status: done

§2.2 Event Channels (Architektur-Überblick)

Spec: §2.2, S. 2-4 — Event-Channel-Begriff, Push-/Pull-/Mixed- Style-Communication, Multiple Consumers, Channel-Administration.

Repo: Architektur-Doku, normative IDL folgt in §2.3.

Tests:

Status: n/a (informative) — Implementations-Pflicht in §2.3.

§2.3 The CosEventChannelAdmin Module

Spec: §2.3, S. 2-8 — IDL-Modul CosEventChannelAdmin mit Channel- und Admin-/Proxy-Interfaces.

Repo: crates/corba-cos-event/src/channel.rs (siehe Sub-Items).

Tests: Inline-Tests in channel.rs (12 inline #[test]).

Status: done

§2.3.1 The EventChannel Interface

Spec: §2.3.1 — interface EventChannel { ConsumerAdmin for_consumers(); SupplierAdmin for_suppliers(); void destroy(); };.

Repo: channel.rs EventChannel mit for_consumers, for_suppliers, destroy.

Tests: Inline.

Status: done

§2.3.2 The ConsumerAdmin Interface

Spec: §2.3.2 — obtain_push_supplier(), obtain_pull_supplier().

Repo: channel.rs ConsumerAdmin.

Tests: Inline.

Status: done

§2.3.3 The SupplierAdmin Interface

Spec: §2.3.3 — obtain_push_consumer(), obtain_pull_consumer().

Repo: channel.rs SupplierAdmin.

Tests: Inline.

Status: done

§2.3.4 The ProxyPushConsumer Interface

Spec: §2.3.4 — connect_push_supplier().

Repo: channel.rs ProxyPushConsumer.

Tests: Inline.

Status: done

§2.3.5 The ProxyPullSupplier Interface

Spec: §2.3.5 — connect_pull_consumer().

Repo: channel.rs ProxyPullSupplier.

Tests: Inline.

Status: done

§2.3.6 The ProxyPullConsumer Interface

Spec: §2.3.6 — connect_pull_supplier().

Repo: channel.rs ProxyPullConsumer mit forward_event als Push-Pfad in den Channel.

Tests: Inline.

Status: done

§2.3.7 The ProxyPushSupplier Interface

Spec: §2.3.7 — connect_push_consumer() + disconnect.

Repo: channel.rs ProxyPushSupplier.

Tests: Inline.

Status: done

§2.4 Typed Event Communication

Spec: §2.4, S. 2-12 — Typed-Push/Pull-Modell-Beschreibung (informativ; IDL in §2.5/§2.7).

Repo:

Tests:

Status: n/a (informative)

§2.5 The CosTypedEventComm Module

Spec: §2.5, S. 2-14 — IDL-Modul CosTypedEventComm mit TypedPushConsumer und TypedPullSupplier.

Repo: crates/corba-cos-event/src/typed.rs (TypedPushConsumer, TypedPushSupplier, TypedPullSupplier-Traits und Helper-Typ TypedInvocation).

Tests: Inline.

Status: done — alle drei Subscription-Patterns ausgewiesen.

§2.5.1 The TypedPushConsumer Interface

Spec: §2.5.1 — TypedPushConsumer : PushConsumer { Object get_typed_consumer(); };.

Repo: typed.rs Trait TypedPushConsumer (mit get_typed_consumer-Pendant via TypedInvocation-Dispatch).

Tests: Inline.

Status: done

§2.5.2 The TypedPullSupplier Interface

Spec: §2.5.2 — TypedPullSupplier : PullSupplier { Object get_typed_supplier(); };.

Repo: crates/corba-cos-event/src/typed.rs::TypedPullSupplier Trait mit pull/try_pull/disconnect Operations.

Tests: typed::tests::{pull_supplier_try_pull_returns_queued_event, pull_supplier_try_pull_returns_none_for_empty, pull_supplier_disconnect_returns_error}.

Status: done

§2.6 Typed Event Channels (Architektur-Überblick)

Spec: §2.6, S. 2-16 — Konzept Typed-Channel.

Repo:

Tests:

Status: n/a (informative)

§2.7 The CosTypedEventChannelAdmin Module

Spec: §2.7, S. 2-16 — IDL-Modul mit TypedEventChannel + TypedConsumerAdmin/TypedSupplierAdmin + Typed-Proxies.

Repo: typed.rs TypedEventChannel mit for_consumers()/ for_suppliers()/destroy() + getrennte TypedConsumerAdmin und TypedSupplierAdmin Strukturen + TypedPullSupplier-Trait fuer den Pull-Proxy-Pfad.

Tests: Inline (siehe Sub-Sections).

Status: done — Channel + Admin-Splits + Proxies live.

§2.7.1 The TypedEventChannel Interface

Spec: §2.7.1 — for_consumers/for_suppliers/destroy analog §2.3.1.

Repo: typed.rs::TypedEventChannel::{for_consumers, for_suppliers, destroy, is_destroyed}.

Tests: typed::tests::{typed_event_channel_for_consumers_returns_admin, typed_event_channel_for_suppliers_returns_admin, destroy_disables_dispatch}.

Status: done

§2.7.2-§2.7.5 Typed Admin/Proxy Interfaces

Spec: §2.7.2-§2.7.5 — TypedConsumerAdmin, TypedSupplierAdmin, TypedProxyPushConsumer, TypedProxyPullSupplier.

Repo: typed.rs::{TypedConsumerAdmin, TypedSupplierAdmin} mit register_consumer/register_pull_supplier/try_pull/Counter- Operationen. TypedProxyPushConsumer ist via existierender TypedPushConsumer-Trait abgedeckt; TypedProxyPullSupplier ueber den neuen TypedPullSupplier-Trait.

Tests: typed::tests::{typed_consumer_admin_register_count_roundtrip, typed_supplier_admin_register_count_roundtrip, typed_supplier_admin_try_pull_returns_first_available}.

Status: done — Admin-/Proxy-Split implementiert.

§2.8 Composing Event Channels and Filtering

Spec: §2.8, S. 2-20 — Channel-Komposition + Filter-Pattern (informativ; Filter ist in eigener Spec CosNotification).

Repo:

Tests:

Status: n/a (informative)

§2.9 Policies for Finding Event Channels

Spec: §2.9, S. 2-20 — Naming-/Trader-Service-Verweise zur Channel-Discovery (informativ).

Repo:

Tests:

Status: n/a (informative)


§3 Lightweight Event Service

§3.1 Platform Independent Model (PIM)

§3.1.1 Overview

Spec: §3.1.1 — Lightweight-Profile-Beschreibung.

Repo:

Tests:

Status: n/a (informative)

§3.1.2 The CosLightweightEventComm Package

Spec: §3.1.2 — Lightweight-Variante von §2.1 (kein Typed-Event, kein Multi-Consumer, reduzierte API).

Repo: crates/corba-cos-event/src/typed.rs::lightweight:: {PROFILE_NAME, is_lightweight} als Profile-Marker; das Lightweight-Subset nutzt denselben Push-Pfad wie TypedPushConsumer, ohne disconnect-Lifecycle (per Channel-destroy()).

Tests: typed::tests::{lightweight_profile_names_match_spec, lightweight_is_lightweight_recognizes_both_profiles}.

Status: done

§3.1.3 The CosLightweightEventChannel Package

Spec: §3.1.3 — Lightweight-Variante von §2.3.

Repo: crates/corba-cos-event/src/typed.rs::lightweight:: CHANNEL_PROFILE_NAME Marker; Channel-Lifecycle ueber TypedEventChannel::destroy() ohne separates ConsumerAdmin/SupplierAdmin-Sub-Profil (Profile-Subset von §2.7.1).

Tests: Cross-Ref §3.1.2.

Status: done

§3.2 Platform Specific Model: CORBA Service

§3.2.1 Overview

Spec: §3.2.1 — PSM-Marker.

Repo:

Tests:

Status: n/a (informative)

§3.2.2 CosEventChannelAdmin Module (PSM)

Spec: §3.2.2 — IDL-PSM, identisch zu §2.3.

Repo: identisch §2.3 (channel.rs).

Tests: Inline.

Status: done — siehe §2.3.

§3.2.3 CosEventComm Module (PSM)

Spec: §3.2.3 — IDL-PSM, identisch zu §2.1.

Repo: identisch §2.1 (comm.rs).

Tests: Inline.

Status: done — siehe §2.1.


ZeroDDS-spezifische Bridges (kein OMG-Item)

CosEvent → DDS-DCPS-Topic Bridge

Spec: kein OMG-Spec-Item; ZeroDDS-spezifische Migrations-Schicht, die EventChannel-Push-Events in DDS-DCPS-Topics übersetzt.

Repo: crates/corba-cos-event/src/channel.rs mit DDS-Hook (per forward_event über corba-dds-bridge).

Tests: Inline.

Status: done — informativ; nicht spec-pflichtig.


Audit-Status

25 done / 0 partial / 0 open / 10 n/a (informative) / 0 n/a (rejected).

Test-Lauf: cargo test -p zerodds-corba-cos-event — 23 Tests grün, 0 failed: * channel::tests::push_fan_out_to_multiple_consumers, destroy_disconnects_proxies, double_connect_yields_already_connected, pull_supplier_dequeues_events, pull_supplier_disconnect_propagates. * comm::tests::any_event_round_trip, connect_error_variants_distinct, push_increments_counter_until_disconnect. * typed::tests::consumer_count_reflects_registrations, dispatch_reaches_registered_consumers, disconnected_consumers_are_skipped_in_count, unknown_repo_id_dispatches_to_zero.

Offene Punkte und Decision-Records: siehe cos-event-service-1.4.open.md.