Using the Event Service









Introduction



The Event Service is the CORBA service which allows to dispatch events from suppliers to consumers. An event channel is the medium of this dispatching. Each event supplier communicates its events to a single event channel through a proxy consumer attached to the channel. Each event consumer gets events from the event channel from a proxy supplier attached to the channel. Each end point of the communication can use the push or the pull model (see OMG Technical Library for detailed description).

In this implementation, at event channel creation time, you can decide if a channel keeps an history of events to be delivered to consumers at connection time, or if each event is discarded once dispatched to connected consumers.

The whole OMG IDL specification of the Event Service is implemented. To simplify the use of the Event Service, Top Graph'X added some extra usefull facilities like an event channel factory (see Top Graph'X additions).

The Event Service is an initial service which runs as a standalone program, its object id is "TgxEventService". Its use is protected by a license key.







Limitations



No limitation is known for this service.







Top Graph'X additions

To make easier the use of the Event Service, the module TgxEventAdmin has been added. It contains four interfaces:

Link

The IDL description of this interface is:
    interface Link {
        void  link () raises(Linked);
        void unlink() raises(Unlinked);
        void destroy();
        readonly attribute CosEventChannelAdmin::EventChannel from;
        readonly attribute CosEventChannelAdmin::EventChannel to;
    };

Sender

The IDL description of this interface is:
    interface Sender: CosEventComm::PushSupplier {
        void send(in any data) raises(CosEventComm::Disconnected);
        void destroy();
    };

Receiver

The IDL description of this interface is:
    interface Receiver: CosEventComm::PullConsumer {
        Event_List get_event_queue() raises(CosEventComm::Disconnected);
        void destroy();
    };

EventChannelFactory

The IDL description of this interface is:
    interface EventChannelFactory {
        CosEventChannelAdmin::EventChannel create_channel(
             in boolean Get_Old_Events,
             in unsigned long queue_length);

        Link create_link (
            in CosEventChannelAdmin::EventChannel from,
            in CosEventChannelAdmin::EventChannel to);

        Sender   create_sender  (in CosEventChannelAdmin::EventChannel channel);

        Receiver create_receiver (in CosEventChannelAdmin::EventChannel channel);
    };
Its operations do the following:





Starting the Event Service



The Event Service has no starting particularities.






Using the Event Service



You will have to get first the reference of the event channel factory which is the initial reference of the Event_Service:

      Corba.Object.Ref (Factory) := Corba.Orb.Resolve_Initial_References
         (This_Orb, TgxEventAdmin.Tgx_Service_Name);

Then, you can create the necessary event channel(s). In order for the suppliers or consumers clients to easily retrieve their channel, it is wise to store its reference in the Naming Service.

In each supplier or consumer client, you will create the appropriate Sender or Receiver object using the convenient event channel.







Email Micro Focus support



Copyright Micro Focus 2002-2014. All rights reserved.