aboutsummaryrefslogtreecommitdiffstats
path: root/lib/cosNotification/src/CosNotifyChannelAdmin.idl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cosNotification/src/CosNotifyChannelAdmin.idl')
-rw-r--r--lib/cosNotification/src/CosNotifyChannelAdmin.idl275
1 files changed, 275 insertions, 0 deletions
diff --git a/lib/cosNotification/src/CosNotifyChannelAdmin.idl b/lib/cosNotification/src/CosNotifyChannelAdmin.idl
new file mode 100644
index 0000000000..b345ff5423
--- /dev/null
+++ b/lib/cosNotification/src/CosNotifyChannelAdmin.idl
@@ -0,0 +1,275 @@
+#ifndef _COS_NOTIFYCHANNELADMIN_IDL_
+#define _COS_NOTIFYCHANNELADMIN_IDL_
+
+#pragma prefix "omg.org"
+
+#include<cosNotificationAppComm.idl>
+#include<CosNotifyFilter.idl>
+#include<CosNotifyComm.idl>
+#include<CosNotification.idl>
+
+module CosNotifyChannelAdmin {
+ exception ConnectionAlreadyActive {};
+ exception ConnectionAlreadyInactive {};
+ exception NotConnected {};
+ // Forward declarations
+ interface ConsumerAdmin;
+ interface SupplierAdmin;
+ interface EventChannel;
+ interface EventChannelFactory;
+
+ enum ProxyType {
+ PUSH_ANY,
+ PULL_ANY,
+ PUSH_STRUCTURED,
+ PULL_STRUCTURED,
+ PUSH_SEQUENCE,
+ PULL_SEQUENCE};
+
+ enum ObtainInfoMode {
+ ALL_NOW_UPDATES_OFF,
+ ALL_NOW_UPDATES_ON,
+ NONE_NOW_UPDATES_OFF,
+ NONE_NOW_UPDATES_ON};
+
+ interface ProxyConsumer : CosNotification::QoSAdmin, CosNotifyFilter::FilterAdmin {
+ readonly attribute ProxyType MyType;
+ readonly attribute SupplierAdmin MyAdmin;
+
+ CosNotification::EventTypeSeq obtain_subscription_types(in ObtainInfoMode mode);
+
+ void validate_event_qos (in CosNotification::QoSProperties required_qos,
+ out CosNotification::NamedPropertyRangeSeq available_qos)
+ raises (CosNotification::UnsupportedQoS);
+ }; // ProxyConsumer
+
+ interface ProxySupplier : CosNotification::QoSAdmin, CosNotifyFilter::FilterAdmin {
+ readonly attribute ProxyType MyType;
+ readonly attribute ConsumerAdmin MyAdmin;
+ attribute CosNotifyFilter::MappingFilter priority_filter;
+ attribute CosNotifyFilter::MappingFilter lifetime_filter;
+
+ CosNotification::EventTypeSeq obtain_offered_types(in ObtainInfoMode mode);
+
+ void validate_event_qos (in CosNotification::QoSProperties required_qos,
+ out CosNotification::NamedPropertyRangeSeq available_qos)
+ raises (CosNotification::UnsupportedQoS);
+ }; // ProxySupplier
+
+ interface ProxyPushConsumer : ProxyConsumer, CosNotifyComm::PushConsumer,
+ CosEventChannelAdmin::ProxyPushConsumer {
+ void connect_any_push_supplier (in CosEventComm::PushSupplier push_supplier)
+ raises(CosEventChannelAdmin::AlreadyConnected);
+ }; // ProxyPushConsumer
+
+ interface StructuredProxyPushConsumer : ProxyConsumer, CosNotifyComm::StructuredPushConsumer {
+ void connect_structured_push_supplier (in CosNotifyComm::StructuredPushSupplier push_supplier)
+ raises(CosEventChannelAdmin::AlreadyConnected);
+ }; // StructuredProxyPushConsumer
+
+ interface SequenceProxyPushConsumer : ProxyConsumer, CosNotifyComm::SequencePushConsumer {
+ void connect_sequence_push_supplier (in CosNotifyComm::SequencePushSupplier push_supplier)
+ raises(CosEventChannelAdmin::AlreadyConnected);
+ }; // SequenceProxyPushConsumer
+
+ interface ProxyPullSupplier : ProxySupplier, CosNotifyComm::PullSupplier,
+ CosEventChannelAdmin::ProxyPullSupplier, oe_CosNotificationComm::Event {
+ void connect_any_pull_consumer (in CosEventComm::PullConsumer pull_consumer)
+ raises(CosEventChannelAdmin::AlreadyConnected);
+ }; // ProxyPullSupplier
+
+ interface StructuredProxyPullSupplier : ProxySupplier, CosNotifyComm::StructuredPullSupplier,
+ oe_CosNotificationComm::Event {
+ void connect_structured_pull_consumer (in CosNotifyComm::StructuredPullConsumer pull_consumer)
+ raises(CosEventChannelAdmin::AlreadyConnected);
+ }; // StructuredProxyPullSupplier
+
+ interface SequenceProxyPullSupplier : ProxySupplier, CosNotifyComm::SequencePullSupplier,
+ oe_CosNotificationComm::Event {
+ void connect_sequence_pull_consumer (in CosNotifyComm::SequencePullConsumer pull_consumer)
+ raises(CosEventChannelAdmin::AlreadyConnected);
+ }; // SequenceProxyPullSupplier
+
+ interface ProxyPullConsumer : ProxyConsumer, CosNotifyComm::PullConsumer,
+ CosEventChannelAdmin::ProxyPullConsumer {
+ void connect_any_pull_supplier (in CosEventComm::PullSupplier pull_supplier)
+ raises(CosEventChannelAdmin::AlreadyConnected, CosEventChannelAdmin::TypeError);
+
+ void suspend_connection()
+ raises(ConnectionAlreadyInactive, NotConnected);
+
+ void resume_connection()
+ raises(ConnectionAlreadyActive, NotConnected);
+ }; // ProxyPullConsumer
+
+ interface StructuredProxyPullConsumer : ProxyConsumer, CosNotifyComm::StructuredPullConsumer {
+ void connect_structured_pull_supplier (in CosNotifyComm::StructuredPullSupplier pull_supplier)
+ raises(CosEventChannelAdmin::AlreadyConnected, CosEventChannelAdmin::TypeError);
+
+ void suspend_connection()
+ raises(ConnectionAlreadyInactive, NotConnected);
+
+ void resume_connection()
+ raises(ConnectionAlreadyActive, NotConnected);
+ }; // StructuredProxyPullConsumer
+
+ interface SequenceProxyPullConsumer : ProxyConsumer, CosNotifyComm::SequencePullConsumer {
+ void connect_sequence_pull_supplier (in CosNotifyComm::SequencePullSupplier pull_supplier)
+ raises(CosEventChannelAdmin::AlreadyConnected, CosEventChannelAdmin::TypeError);
+
+ void suspend_connection()
+ raises(ConnectionAlreadyInactive, NotConnected);
+
+ void resume_connection()
+ raises(ConnectionAlreadyActive, NotConnected);
+ }; // SequenceProxyPullConsumer
+
+ interface ProxyPushSupplier : ProxySupplier, CosNotifyComm::PushSupplier,
+ CosEventChannelAdmin::ProxyPushSupplier, oe_CosNotificationComm::Event {
+ void connect_any_push_consumer (in CosEventComm::PushConsumer push_consumer)
+ raises(CosEventChannelAdmin::AlreadyConnected, CosEventChannelAdmin::TypeError);
+
+ void suspend_connection()
+ raises(ConnectionAlreadyInactive, NotConnected);
+
+ void resume_connection()
+ raises(ConnectionAlreadyActive, NotConnected);
+ }; // ProxyPushSupplier
+
+ interface StructuredProxyPushSupplier : ProxySupplier, CosNotifyComm::StructuredPushSupplier,
+ oe_CosNotificationComm::Event {
+ void connect_structured_push_consumer (in CosNotifyComm::StructuredPushConsumer push_consumer)
+ raises(CosEventChannelAdmin::AlreadyConnected, CosEventChannelAdmin::TypeError);
+
+ void suspend_connection()
+ raises(ConnectionAlreadyInactive, NotConnected);
+
+ void resume_connection()
+ raises(ConnectionAlreadyActive, NotConnected);
+ }; // StructuredProxyPushSupplier
+
+ interface SequenceProxyPushSupplier : ProxySupplier, CosNotifyComm::SequencePushSupplier,
+ oe_CosNotificationComm::Event {
+ void connect_sequence_push_consumer (in CosNotifyComm::SequencePushConsumer push_consumer)
+ raises(CosEventChannelAdmin::AlreadyConnected, CosEventChannelAdmin::TypeError);
+
+ void suspend_connection()
+ raises(ConnectionAlreadyInactive, NotConnected);
+
+ void resume_connection()
+ raises(ConnectionAlreadyActive, NotConnected);
+ }; // SequenceProxyPushSupplier
+
+
+ typedef long ProxyID;
+ typedef sequence <ProxyID> ProxyIDSeq;
+
+ enum ClientType {
+ ANY_EVENT,
+ STRUCTURED_EVENT,
+ SEQUENCE_EVENT};
+
+ enum InterFilterGroupOperator {
+ AND_OP,
+ OR_OP };
+
+ typedef long AdminID;
+ typedef sequence<AdminID> AdminIDSeq;
+
+ exception AdminNotFound {};
+ exception ProxyNotFound {};
+
+ struct AdminLimit {
+ CosNotification::PropertyName name;
+ CosNotification::PropertyValue value;
+ };
+
+ exception AdminLimitExceeded { AdminLimit admin_property_err; };
+
+ interface ConsumerAdmin : CosNotification::QoSAdmin, CosNotifyComm::NotifySubscribe,
+ CosNotifyFilter::FilterAdmin, CosEventChannelAdmin::ConsumerAdmin,
+ oe_CosNotificationComm::Event {
+ readonly attribute AdminID MyID;
+ readonly attribute EventChannel MyChannel;
+ readonly attribute InterFilterGroupOperator MyOperator;
+ attribute CosNotifyFilter::MappingFilter priority_filter;
+ attribute CosNotifyFilter::MappingFilter lifetime_filter;
+ readonly attribute ProxyIDSeq pull_suppliers;
+ readonly attribute ProxyIDSeq push_suppliers;
+
+ ProxySupplier get_proxy_supplier (in ProxyID proxy_id)
+ raises (ProxyNotFound);
+
+ ProxySupplier obtain_notification_pull_supplier (in ClientType ctype, out ProxyID proxy_id)
+ raises (AdminLimitExceeded);
+
+ ProxySupplier obtain_notification_push_supplier (in ClientType ctype, out ProxyID proxy_id)
+ raises (AdminLimitExceeded);
+
+ void destroy();
+ }; // ConsumerAdmin
+
+ interface SupplierAdmin : CosNotification::QoSAdmin, CosNotifyComm::NotifyPublish,
+ CosNotifyFilter::FilterAdmin, CosEventChannelAdmin::SupplierAdmin ,
+ oe_CosNotificationComm::Event {
+ readonly attribute AdminID MyID;
+ readonly attribute EventChannel MyChannel;
+ readonly attribute InterFilterGroupOperator MyOperator;
+ readonly attribute ProxyIDSeq pull_consumers;
+ readonly attribute ProxyIDSeq push_consumers;
+
+ ProxyConsumer get_proxy_consumer (in ProxyID proxy_id)
+ raises (ProxyNotFound);
+
+ ProxyConsumer obtain_notification_pull_consumer (in ClientType ctype, out ProxyID proxy_id)
+ raises (AdminLimitExceeded);
+
+ ProxyConsumer obtain_notification_push_consumer (in ClientType ctype, out ProxyID proxy_id)
+ raises (AdminLimitExceeded);
+
+ void destroy();
+ }; // SupplierAdmin
+
+ interface EventChannel : CosNotification::QoSAdmin, CosNotification::AdminPropertiesAdmin,
+ CosEventChannelAdmin::EventChannel,
+ oe_CosNotificationComm::Event {
+ readonly attribute EventChannelFactory MyFactory;
+ readonly attribute ConsumerAdmin default_consumer_admin;
+ readonly attribute SupplierAdmin default_supplier_admin;
+ readonly attribute CosNotifyFilter::FilterFactory default_filter_factory;
+
+ ConsumerAdmin new_for_consumers(in InterFilterGroupOperator op, out AdminID id);
+
+ SupplierAdmin new_for_suppliers(in InterFilterGroupOperator op, out AdminID id);
+
+ ConsumerAdmin get_consumeradmin (in AdminID id)
+ raises (AdminNotFound);
+
+ SupplierAdmin get_supplieradmin (in AdminID id)
+ raises (AdminNotFound);
+
+ AdminIDSeq get_all_consumeradmins();
+
+ AdminIDSeq get_all_supplieradmins();
+ }; // EventChannel
+
+ typedef long ChannelID;
+ typedef sequence<ChannelID> ChannelIDSeq;
+ exception ChannelNotFound {};
+
+ interface EventChannelFactory {
+ EventChannel create_channel (in CosNotification::QoSProperties initial_qos,
+ in CosNotification::AdminProperties initial_admin,
+ out ChannelID id)
+ raises(CosNotification::UnsupportedQoS, CosNotification::UnsupportedAdmin);
+
+ ChannelIDSeq get_all_channels();
+
+ EventChannel get_event_channel (in ChannelID id)
+ raises (ChannelNotFound);
+ }; // EventChannelFactory
+}; // CosNotifyChannelAdmin
+
+
+#endif /* ifndef _COS_NOTIFYCHANNELADMIN_IDL_ */
+