diff options
Diffstat (limited to 'lib/cosEventDomain/src/CosEventDomainAdmin.idl')
-rw-r--r-- | lib/cosEventDomain/src/CosEventDomainAdmin.idl | 280 |
1 files changed, 280 insertions, 0 deletions
diff --git a/lib/cosEventDomain/src/CosEventDomainAdmin.idl b/lib/cosEventDomain/src/CosEventDomainAdmin.idl new file mode 100644 index 0000000000..2ecd935c67 --- /dev/null +++ b/lib/cosEventDomain/src/CosEventDomainAdmin.idl @@ -0,0 +1,280 @@ +#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_ + |