4 Event Domain Service
4.1 Overview of the CosEventDomain Service
The Event Domain service allows programmers to manage a cluster of information channels.
Event Domain Service Components
There are two components in the OMG CosEventDomainAdmin service architecture:
- EventDomainFactory: a factory for creating EventDomains.
- EventDomain: supplies a tool, which makes it easy to create topologies of interconnected channels (i.e. a directed graph).
A Tutorial on How to Create a Simple Service
To be able to use the cosEventDomain application, the cosNotification and, possibly, the cosTime application must be installed.
How to Run Everything
Below is a short transcript on how to run cosEventDomain.
%% Start Mnesia and Orber mnesia:delete_schema([node()]), mnesia:create_schema([node()]), orber:install([node()]), mnesia:start(), orber:start(), %% Install and start cosNotification. cosNotificationApp:install(), cosNotificationApp:start(), %% Install and start cosEventDomain. cosEventDomainApp:install(), cosEventDomainApp:start(), %% Start a CosEventDomainAdmin factory. AdminFac = cosEventDomainApp:start_factory(), %% Define the desired QoS settings: QoS = [#'CosNotification_Property' {name='CosEventDomainAdmin':'DiamondDetection'(), value=any:create(orber_tc:short(), 'CosEventDomainAdmin':'AuthorizeDiamonds'())}, #'CosNotification_Property' {name='CosEventDomainAdmin':'CycleDetection'(), value=any:create(orber_tc:short(), 'CosEventDomainAdmin':'ForbidCycles'())}], %% Create a new EventDomain: {ED, EDId} = 'CosEventDomainAdmin_EventDomainFactory': create_event_domain(Fac, QoS, []), %% Now we can add Notification Channels to the Domain. How this %% is done, see the cosNotification documentation. Let us assume %% that we have gained access to two Channel Objects; add them to the %% domain: ID1 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch1), ID2 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch2), %% To connect them, we must first define a connection struct: C1 = #'CosEventDomainAdmin_Connection'{supplier_id=ID1, \011\011\011\011 consumer_id=ID2, \011\011\011\011 ctype='STRUCTURED_EVENT', \011\011\011\011 notification_style='Pull'}, %% Connect them: 'CosEventDomainAdmin_EventDomain':add_connection(ED, C1),