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 Pull
Four IDL interfaces similar to the Untyped Push are available for event channel connection and disconnection in the Pull method:
- PullSupplier
- PullConsumer
- ProxyPullConsumer
- ProxyPullSupplier
Consumers use PullConsumer and ProxyPullSupplier to request events from the channel, and event channels use PullSupplier and ProxyPullConsumer to request events from suppliers. PullConsumer and ProxyPullConsumer are also common to the typed method.
A consumer initiates connection by obtaining a reference to an object in the channel of type ProxyPullSupplier. By invoking the connect_pull_consumer() operation on the ProxyPullSupplier object and passing it a reference to an object of type PullConsumer, the consumer can be notified if the event channel terminates the connection. An AlreadyConnected exception is available for this connection.
 |
Untyped pull supplier and pull consumer connect to event channel. |
The consumer’s initial reference to ProxyPullSupplier is obtained through event channel administration steps similar to those used in the Push method. Once an EventChannel reference is obtained, a for_consumers() operation is invoked on that object which returns a ConsumerAdmin reference. Invoking an obtain_pull_supplier() returns the ProxyPullSupplier reference.
A pull supplier connects by obtaining a reference to a ProxyPullConsumer object implemented in the event channel. The supplier then invokes the operation connect_pull_supplier() on the ProxyPullConsumer object, using a reference to an object of type PullSupplier as a parameter. This connection also supports an AlreadyConnected exception.
The event channel administration steps for obtaining a ProxyPullConsumer include obtaining an EventChannel reference, invoking a for_suppliers() operation on the EventChannel for a reference to a SupplierAdmin type object and then invoking an obtain_pull_consumer() on SupplierAdmin.
There are two ways for the consumer to initiate event transfer in the Pull method: pull() and try_pull(). Both pull() and try_pull() are invoked on the ProxyPullSupplier object in the event channel.
 |
Untyped pull transfer through event channel. |
When a pull() is invoked and an event does not already exist in the channel, the channel invokes a pull() on the PullSupplier object in each registered supplier. After initiating a transfer, the consumer blocks until the event channel supplies an event, and the event channel does likewise by blocking until a supplier supplies an event.
When the consumer invokes a try_pull(), the event channel in turn invokes a try_pull() on the PullSupplier object in each registered supplier. Depending on whether or not a supplier has an event, the boolean has_event parameter for the try_pull() operation is set to true or false.
Summary Contents
- Communicating Indirectly
- Event Transfer And Communication
- Event Example
- Programming Interface
- Untyped Push
- Untyped Pull
- Typed Push < Next
- Typed Pull