#ifndef _COS_EVENT_DOMAIN_ADMIN_IDL_
#define _COS_EVENT_DOMAIN_ADMIN_IDL_
#pragma prefix "omg.org"
// Event Domain Interface
#include "CosNotification.idl"
#include "CosEventComm.idl"
#include "CosNotifyComm.idl"
#include "CosNotifyChannelAdmin.idl"
module CosEventDomainAdmin {
// The following constant declarations define the Event Domain
// QoS property names and the associated values each property can
// take on. The name/value pairs for each Event Domain property
// are grouped, beginning with a string constant defined for the
// property name, followed by the values the property can take on.
const string CycleDetection = "CycleDetection";
const short AuthorizeCycles = 0; // Default value
const short ForbidCycles = 1;
const string DiamondDetection = "DiamondDetection";
const short AuthorizeDiamonds = 0; // Default value
const short ForbidDiamonds = 1;
// The following enum declaration defines the types that a channel
// can be of. It is used to specify channel types while externalizing
// and instantiating topologies.
enum ChannelType
{
CHANNEL,
TYPED_CHANNEL,
LOG_CHANNEL,
TYPED_LOG_CHANNEL
};
enum NotificationStyle {
Push,
Pull
};
typedef long MemberID;
typedef sequence <MemberID> MemberIDSeq;
typedef long ConnectionID;
typedef sequence <ConnectionID> ConnectionIDSeq;
struct Connection {
MemberID supplier_id;
MemberID consumer_id;
CosNotifyChannelAdmin::ClientType ctype;
NotificationStyle notification_style;
};
typedef MemberIDSeq Route;
typedef sequence<Route> RouteSeq;
typedef Route Cycle;
typedef sequence<Cycle> CycleSeq;
typedef RouteSeq Diamond;
typedef sequence<Diamond> DiamondSeq;
exception CycleCreationForbidden
{
Cycle cyc;
};
exception DiamondCreationForbidden
{
Diamond diam;
};
// Forward declarations
interface ConsumerAdmin;
interface SupplierAdmin;
typedef long DomainID;
typedef sequence <DomainID> DomainIDSeq;
typedef long ItemID;
// EventDomain administrates EventChannels that reside in the same
// administrative domain
exception ConnectionNotFound {};
exception AlreadyExists {};
interface EventDomain :
CosNotification::QoSAdmin ,
CosNotification::AdminPropertiesAdmin {
MemberID add_channel ( in CosNotifyChannelAdmin::EventChannel channel );
MemberIDSeq get_all_channels ();
CosNotifyChannelAdmin::EventChannel get_channel ( in MemberID channel )
raises ( CosNotifyChannelAdmin::ChannelNotFound );
void remove_channel ( in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
ConnectionID add_connection ( in Connection connection)
raises (CosNotifyChannelAdmin::ChannelNotFound,
CosEventChannelAdmin::TypeError,
AlreadyExists,
CycleCreationForbidden,
DiamondCreationForbidden);
ConnectionIDSeq get_all_connections ();
Connection get_connection ( in ConnectionID connection )
raises ( ConnectionNotFound );
void remove_connection ( in ConnectionID connection )
raises ( ConnectionNotFound );
CosNotifyChannelAdmin::ChannelIDSeq get_offer_channels ( in MemberID channel )
raises ( CosNotifyChannelAdmin::ChannelNotFound );
CosNotifyChannelAdmin::ChannelIDSeq get_subscription_channels ( in MemberID channel )
raises ( CosNotifyChannelAdmin::ChannelNotFound );
void destroy();
// Cycle and diamond configurations listing
CycleSeq get_cycles();
DiamondSeq get_diamonds();
// Connection of clients to the domain
// - using no specific information
// - for any clients
void set_default_consumer_channel(in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
void set_default_supplier_channel(in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::ProxyPushSupplier
connect_push_consumer(in CosEventComm::PushConsumer client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::ProxyPullSupplier
connect_pull_consumer(in CosEventComm::PullConsumer client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::ProxyPushConsumer
connect_push_supplier(in CosEventComm::PushSupplier client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::ProxyPullConsumer
connect_pull_supplier(in CosEventComm::PullSupplier client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
// - for structured clients
CosNotifyChannelAdmin::StructuredProxyPushSupplier
connect_structured_push_consumer(in CosNotifyComm::StructuredPushConsumer client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::StructuredProxyPullSupplier
connect_structured_pull_consumer(in CosNotifyComm::StructuredPullConsumer client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::StructuredProxyPushConsumer
connect_structured_push_supplier(in CosNotifyComm::StructuredPushSupplier client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::StructuredProxyPullConsumer
connect_structured_pull_supplier(in CosNotifyComm::StructuredPullSupplier client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
// - for sequence clients
CosNotifyChannelAdmin::SequenceProxyPushSupplier
connect_sequence_push_consumer(in CosNotifyComm::SequencePushConsumer client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::SequenceProxyPullSupplier
connect_sequence_pull_consumer(in CosNotifyComm::SequencePullConsumer client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::SequenceProxyPushConsumer
connect_sequence_push_supplier(in CosNotifyComm::SequencePushSupplier client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::SequenceProxyPullConsumer
connect_sequence_pull_supplier(in CosNotifyComm::SequencePullSupplier client)
raises (CosNotifyChannelAdmin::ChannelNotFound);
// - using a channel id
// - for any clients
CosNotifyChannelAdmin::ProxyPushSupplier
connect_push_consumer_with_id(in CosEventComm::PushConsumer client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::ProxyPullSupplier
connect_pull_consumer_with_id(in CosEventComm::PullConsumer client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::ProxyPushConsumer
connect_push_supplier_with_id(in CosEventComm::PushSupplier client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::ProxyPullConsumer
connect_pull_supplier_with_id(in CosEventComm::PullSupplier client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
// - for structured clients
CosNotifyChannelAdmin::StructuredProxyPushSupplier
connect_structured_push_consumer_with_id(in CosNotifyComm::StructuredPushConsumer client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::StructuredProxyPullSupplier
connect_structured_pull_consumer_with_id(in CosNotifyComm::StructuredPullConsumer client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::StructuredProxyPushConsumer
connect_structured_push_supplier_with_id(in CosNotifyComm::StructuredPushSupplier client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::StructuredProxyPullConsumer
connect_structured_pull_supplier_with_id(in CosNotifyComm::StructuredPullSupplier client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
// - for sequence clients
CosNotifyChannelAdmin::SequenceProxyPushSupplier
connect_sequence_push_consumer_with_id(in CosNotifyComm::SequencePushConsumer client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::SequenceProxyPullSupplier
connect_sequence_pull_consumer_with_id(in CosNotifyComm::SequencePullConsumer client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::SequenceProxyPushConsumer
connect_sequence_push_supplier_with_id(in CosNotifyComm::SequencePushSupplier client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
CosNotifyChannelAdmin::SequenceProxyPullConsumer
connect_sequence_pull_supplier_with_id(in CosNotifyComm::SequencePullSupplier client,
in MemberID channel)
raises (CosNotifyChannelAdmin::ChannelNotFound);
};
exception DomainNotFound {};
interface EventDomainFactory {
EventDomain create_event_domain( in CosNotification::QoSProperties initialQoS ,
in CosNotification::AdminProperties initialAdmin,
out DomainID id )
raises ( CosNotification::UnsupportedQoS,
CosNotification::UnsupportedAdmin );
DomainIDSeq get_all_domains ();
EventDomain get_event_domain (
in DomainID id )
raises ( DomainNotFound );
};
};
#endif // _COS_EVENT_DOMAIN_ADMIN_IDL_