The Event Domain service allows programmers to manage a cluster of information channels.
There are two components in the OMG CosEventDomainAdmin service architecture:
To be able to use the cosEventDomain application, the cosNotification and, possibly, the cosTime application must be installed.
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,
consumer_id=ID2,
ctype='STRUCTURED_EVENT',
notification_style='Pull'},
%% Connect them:
'CosEventDomainAdmin_EventDomain':add_connection(ED, C1),