Event Service
Summary by Peter Jacobs
Implementation by Tawee Pimsarn
This review of the CORBA Event Service contains a summary and an implementation.
Summary
The OrbixEvents Programmer’s Guide from IONA Technologies PLC was used to prepare this summary.
The guide is available from IONA’s site at http://www.iona.com or by downloading it directly in Adobe Acrobat Reader format.
Summary Contents
- Communicating Indirectly
- Event Transfer And Communication
- Event Example
- Programming Interface
- Untyped Push
- Untyped Pull
- Typed Push
- Typed Pull
Untyped Push
To support the Push method of untyped events, four IDL interfaces are defined for connection to and disconnection from event channels:
- PushSupplier
- PushConsumer
- ProxyPushConsumer
- ProxyPushSupplier
PushSupplier and ProxyPushConsumer allow suppliers to supply events to the event channel. PushConsumer and ProxyPushSupplier allow consumers to receive events from the event channel.
A supplier initiates connection to an event channel by obtaining a reference to an object in the channel of type ProxyPushConsumer. The supplier then invokes the operation connect_push_supplier() on that object, passing a reference to an object of type PushSupplier as a parameter. An AlreadyConnected exception will occur if ProxyPushConsumer is already connected. The supplier uses PushSupplier to disconnect itself from the event channel.
 |
| Untyped push supplier and push consumer connect to event channel. |
To initially obtain the reference to ProxyPushConsumer, the supplier must perform some event channel administration steps. First, a reference to an EventChannel object in the event channel must be obtained. References to these objects are typically published in the CORBA Naming Service. The supplier then invokes the for_suppliers() operation on the EventChannel object to receive a reference to an object of type SupplierAdmin. A reference to ProxyPushConsumer is then obtained by invoking the obtain_push_consumer() operation on the SupplierAdmin.
A consumer connects to an event channel by first obtaining a reference to a ProxyPushSupplier object in the event channel. It then registers with the channel by invoking the connect_push_consumer() on the ProxyPushSupplier object. A reference to an object of type PushConsumer is passed to the object. Like a supplier connection, an AlreadyConnected exception is available.
Consumers are required to perform event channel administration steps to obtain the initial reference to a ProxyPushSupplier object. Like the supplier, the consumer must first obtain a reference to an EventChannel object and this is typically done through the Naming Service. A for_consumers() operation is then invoked on the EventChannel to obtain a reference to an object of type ConsumerAdmin. An obtain_push_supplier() is then invoked on the ConsumerAdmin for the ProxyPushSupplier reference.
 |
| Untyped push transfer through event channel. |
To transfer events through an event channel, a supplier invokes the push() operation on a ProxyPushConsumer object in the channel. The data the supplier pushes as a parameter is of type any. The channel ProxyPushSupplier then invokes a push() operation on the PushConsumer object in each registered consumer.
Summary Contents
- Communicating Indirectly
- Event Transfer And Communication
- Event Example
- Programming Interface
- Untyped Push
- Untyped Pull < Next
- Typed Push
- Typed Pull