Wie im vorigen Abschnitt erklärt wurde, besteht die Aufgabe von Event-Channel-Objekten darin, Events von Suppliern zu empfangen und sie an registrierte Consumer weiterzuleiten. Die CORBA-Event-Service Spezifikation enthält eine große Anzahl von IDL-Definitionen für die Verwaltung und Benutzung von Event-Channel-Objekten. Dadurch wird eine breite Vielfalt von Kommunikationsmodellen (Push/Pull, generisch/typisiert) ermöglicht.
Eine vollständige Implementierung der im CORBA-Event-Service definierten Schnittstellen hätte den Rahmen der Aufgabenstellung gesprengt und wurde daher nicht durchgeführt. Statt dessen wurde die Objektklasse Event_Dispatcher entwickelt. Ein Event_Dispatcher kann die gleiche Funktionalität erbringen wie ein Event-Channel, unter folgenden Voraussetzungen:
Die Klasse Event_Dispatcher ist von der Klasse Event_consumer abgeleitet und stellt zusätzliche Methoden zum Registrieren und Deregistrieren von Consumer-Objekten bereit.
interface Event_Dispatcher : Event_consumer { void register_consumer (in Event_consumer consumer); void consumer_disconnect (in Event_consumer consumer); };
Dadurch, daß der Event_Dispatcher von der Klasse Event_consumer abgeleitet wurde, ist er ein Push-Consumer für die darin definierten Events.
Ein Event_Dispatcher hat eine Liste der Objektreferenzen aller registrierten Consumer. Für diese Liste wurde die Collection-Class somf_TDeque verwendet (eine Liste von Objekten). Die Funktionalität eines Event_Dispatchers besteht darin, daß er jede Ereignismeldung, die er durch den Aufruf einer seiner von Event_consumer geerbten Methoden empfängt, an alle registrierten Consumer weiterleitet.
Der Event_Dispatcher dient somit einerseits als zentrales Consumer-Objekt für alle Supplier von Systems-Management-Events und ist andererseits der Supplier für alle seine registrierten Consumer-Objekte (vgl. Abb. 5.6).