aboutsummaryrefslogtreecommitdiffstats
path: root/lib/cosEventDomain/src/CosEventDomainAdmin.idl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cosEventDomain/src/CosEventDomainAdmin.idl')
-rw-r--r--lib/cosEventDomain/src/CosEventDomainAdmin.idl280
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_
+