Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members  

CosNotifyChannelAdmin.idl

Go to the documentation of this file.
00001 #ifndef COSNOTIFYCHANNELADMIN_IDL 
00002 #define COSNOTIFYCHANNELADMIN_IDL
00003 
00004 #include <CosEventComm.idl>
00005 #include <CosEventChannelAdmin.idl>
00006 #include <CosNotification.idl>
00007 #include <CosNotifyFilter.idl>
00008 
00019 #pragma prefix "omg.org"
00020 
00021 module CosNotifyChannelAdmin
00022 {
00026    exception ConnectionAlreadyActive {};
00027 
00031    exception ConnectionAlreadyInactive {};
00032 
00036    exception NotConnected {};
00037 
00038    // Forward declarations
00039    interface ConsumerAdmin;
00040    interface SupplierAdmin;
00041    interface EventChannel;
00042    interface EventChannelFactory;
00043 
00047    enum ProxyType
00048    {
00049       PUSH_ANY,
00050       PULL_ANY,
00051       PUSH_STRUCTURED,
00052       PULL_STRUCTURED,
00053       PUSH_SEQUENCE,
00054       PULL_SEQUENCE,
00055       PUSH_TYPED,
00056       PULL_TYPED
00057    };
00058 
00062    enum ObtainInfoMode
00063    {
00064       ALL_NOW_UPDATES_OFF,
00065       ALL_NOW_UPDATES_ON,
00066       NONE_NOW_UPDATES_OFF,
00067       NONE_NOW_UPDATES_ON
00068    };
00069 
00073    interface ProxyConsumer :
00074       CosNotification::QoSAdmin,
00075       CosNotifyFilter::FilterAdmin
00076    {
00080       readonly attribute ProxyType MyType;
00081 
00085       readonly attribute SupplierAdmin MyAdmin;
00086 
00093       CosNotification::EventTypeSeq obtain_subscription_types(
00094          in ObtainInfoMode mode );
00095 
00106       void validate_event_qos (
00107          in CosNotification::QoSProperties required_qos,
00108          out CosNotification::NamedPropertyRangeSeq available_qos)
00109          raises (CosNotification::UnsupportedQoS);
00110 
00111    }; // ProxyConsumer
00112 
00116    interface ProxySupplier :
00117       CosNotification::QoSAdmin,
00118       CosNotifyFilter::FilterAdmin
00119    {
00123       readonly attribute ProxyType MyType;
00124 
00128       readonly attribute ConsumerAdmin MyAdmin;
00129 
00134       attribute CosNotifyFilter::MappingFilter priority_filter;
00135 
00140       attribute CosNotifyFilter::MappingFilter lifetime_filter;
00141 
00148       CosNotification::EventTypeSeq obtain_offered_types(
00149          in ObtainInfoMode mode );
00150 
00161       void validate_event_qos (
00162          in CosNotification::QoSProperties required_qos,
00163          out CosNotification::NamedPropertyRangeSeq available_qos)
00164          raises (CosNotification::UnsupportedQoS);
00165 
00166    }; // ProxySupplier
00167 
00171    interface ProxyPushConsumer :
00172       ProxyConsumer,
00173       CosNotifyComm::PushConsumer
00174    {
00181       void connect_any_push_supplier (
00182          in CosEventComm::PushSupplier push_supplier)
00183          raises(CosEventChannelAdmin::AlreadyConnected);
00184 
00185    }; // ProxyPushConsumer
00186 
00190    interface StructuredProxyPushConsumer :
00191       ProxyConsumer,
00192       CosNotifyComm::StructuredPushConsumer
00193    {
00200       void connect_structured_push_supplier (
00201          in CosNotifyComm::StructuredPushSupplier push_supplier)
00202          raises(CosEventChannelAdmin::AlreadyConnected);
00203 
00204    }; // StructuredProxyPushConsumer
00205 
00209    interface SequenceProxyPushConsumer :
00210       ProxyConsumer,
00211       CosNotifyComm::SequencePushConsumer
00212    {
00219       void connect_sequence_push_supplier (
00220          in CosNotifyComm::SequencePushSupplier push_supplier)
00221          raises(CosEventChannelAdmin::AlreadyConnected);
00222 
00223    }; // SequenceProxyPushConsumer
00224 
00228    interface ProxyPullSupplier :
00229       ProxySupplier,
00230       CosNotifyComm::PullSupplier
00231    {
00238       void connect_any_pull_consumer (
00239          in CosEventComm::PullConsumer pull_consumer)
00240          raises(CosEventChannelAdmin::AlreadyConnected);
00241 
00242    }; // ProxyPullSupplier
00243 
00247    interface StructuredProxyPullSupplier :
00248       ProxySupplier,
00249       CosNotifyComm::StructuredPullSupplier
00250    {
00257       void connect_structured_pull_consumer (
00258          in CosNotifyComm::StructuredPullConsumer pull_consumer)
00259          raises(CosEventChannelAdmin::AlreadyConnected);
00260 
00261    }; // StructuredProxyPullSupplier
00262 
00266    interface SequenceProxyPullSupplier :
00267       ProxySupplier,
00268       CosNotifyComm::SequencePullSupplier
00269    {
00276       void connect_sequence_pull_consumer (
00277          in CosNotifyComm::SequencePullConsumer pull_consumer)
00278          raises(CosEventChannelAdmin::AlreadyConnected);
00279 
00280    }; // SequenceProxyPullSupplier
00281 
00285    interface ProxyPullConsumer :
00286       ProxyConsumer,
00287       CosNotifyComm::PullConsumer
00288    {
00296       void connect_any_pull_supplier (
00297          in CosEventComm::PullSupplier pull_supplier)
00298          raises(CosEventChannelAdmin::AlreadyConnected,
00299                 CosEventChannelAdmin::TypeError );
00300 
00306       void suspend_connection()
00307          raises(ConnectionAlreadyInactive, NotConnected);
00308 
00314       void resume_connection()
00315          raises(ConnectionAlreadyActive, NotConnected);
00316 
00317    }; // ProxyPullConsumer
00318 
00322    interface StructuredProxyPullConsumer :
00323       ProxyConsumer,
00324       CosNotifyComm::StructuredPullConsumer
00325    {
00333       void connect_structured_pull_supplier (
00334          in CosNotifyComm::StructuredPullSupplier pull_supplier)
00335          raises(CosEventChannelAdmin::AlreadyConnected,
00336                 CosEventChannelAdmin::TypeError );
00337 
00343       void suspend_connection()
00344          raises(ConnectionAlreadyInactive, NotConnected);
00345 
00351       void resume_connection()
00352          raises(ConnectionAlreadyActive, NotConnected);
00353 
00354    }; // StructuredProxyPullConsumer
00355 
00359    interface SequenceProxyPullConsumer :
00360       ProxyConsumer,
00361       CosNotifyComm::SequencePullConsumer
00362    {
00370       void connect_sequence_pull_supplier (
00371          in CosNotifyComm::SequencePullSupplier pull_supplier)
00372          raises(CosEventChannelAdmin::AlreadyConnected,
00373                 CosEventChannelAdmin::TypeError );
00374 
00380       void suspend_connection()
00381          raises(ConnectionAlreadyInactive, NotConnected);
00382 
00388       void resume_connection()
00389          raises(ConnectionAlreadyActive, NotConnected);
00390 
00391    }; // SequenceProxyPullConsumer
00392 
00396    interface ProxyPushSupplier :
00397       ProxySupplier,
00398       CosNotifyComm::PushSupplier
00399    {
00407       void connect_any_push_consumer (
00408          in CosEventComm::PushConsumer push_consumer)
00409          raises(CosEventChannelAdmin::AlreadyConnected,
00410                 CosEventChannelAdmin::TypeError );
00411 
00418       void suspend_connection()
00419          raises(ConnectionAlreadyInactive, NotConnected);
00420 
00427       void resume_connection()
00428          raises(ConnectionAlreadyActive, NotConnected);
00429 
00430    }; // ProxyPushSupplier
00431 
00435    interface StructuredProxyPushSupplier :
00436       ProxySupplier,
00437       CosNotifyComm::StructuredPushSupplier
00438    {
00446       void connect_structured_push_consumer (
00447          in CosNotifyComm::StructuredPushConsumer push_consumer)
00448          raises(CosEventChannelAdmin::AlreadyConnected,
00449                 CosEventChannelAdmin::TypeError );
00450 
00457       void suspend_connection()
00458          raises(ConnectionAlreadyInactive, NotConnected);
00459 
00466       void resume_connection()
00467          raises(ConnectionAlreadyActive, NotConnected);
00468 
00469    }; // StructuredProxyPushSupplier
00470 
00474    interface SequenceProxyPushSupplier :
00475       ProxySupplier,
00476       CosNotifyComm::SequencePushSupplier
00477    {
00485       void connect_sequence_push_consumer (
00486          in CosNotifyComm::SequencePushConsumer push_consumer)
00487          raises(CosEventChannelAdmin::AlreadyConnected,
00488                 CosEventChannelAdmin::TypeError );
00489 
00496       void suspend_connection()
00497          raises(ConnectionAlreadyInactive, NotConnected);
00498 
00505       void resume_connection()
00506          raises(ConnectionAlreadyActive, NotConnected);
00507 
00508    }; // SequenceProxyPushSupplier
00509 
00513    typedef long ProxyID;
00514 
00518    typedef sequence <ProxyID> ProxyIDSeq;
00519 
00523    enum ClientType
00524    {
00525       ANY_EVENT,
00526       STRUCTURED_EVENT,
00527       SEQUENCE_EVENT
00528    };
00529 
00533    enum InterFilterGroupOperator { AND_OP, OR_OP };
00534 
00538    typedef long AdminID;
00539 
00543    typedef sequence<AdminID> AdminIDSeq;
00544 
00549    exception AdminNotFound {};
00550 
00554    exception ProxyNotFound {};
00555 
00560    struct AdminLimit
00561    {
00562       CosNotification::PropertyName name;
00563       CosNotification::PropertyValue value;
00564    };
00565 
00570    exception AdminLimitExceeded { AdminLimit admin_property_err; };
00571 
00575    interface ConsumerAdmin :
00576       CosNotification::QoSAdmin,
00577       CosNotifyComm::NotifySubscribe,
00578       CosNotifyFilter::FilterAdmin,
00579       CosEventChannelAdmin::ConsumerAdmin
00580    {
00584       readonly attribute AdminID MyID;
00585 
00589       readonly attribute EventChannel MyChannel;
00590 
00595       readonly attribute InterFilterGroupOperator MyOperator;
00596 
00601       attribute CosNotifyFilter::MappingFilter priority_filter;
00602 
00607       attribute CosNotifyFilter::MappingFilter lifetime_filter;
00608 
00612       readonly attribute ProxyIDSeq pull_suppliers;
00613 
00617       readonly attribute ProxyIDSeq push_suppliers;
00618 
00625       ProxySupplier get_proxy_supplier (
00626          in ProxyID proxy_id )
00627          raises ( ProxyNotFound );
00628 
00638       ProxySupplier obtain_notification_pull_supplier (
00639          in ClientType ctype,
00640          out ProxyID proxy_id)
00641          raises ( AdminLimitExceeded );
00642 
00652       ProxySupplier obtain_notification_push_supplier (
00653          in ClientType ctype,
00654          out ProxyID proxy_id)
00655          raises ( AdminLimitExceeded );
00656 
00660       void destroy();
00661 
00662    }; // ConsumerAdmin
00663 
00667    interface SupplierAdmin :
00668       CosNotification::QoSAdmin,
00669       CosNotifyComm::NotifyPublish,
00670       CosNotifyFilter::FilterAdmin,
00671       CosEventChannelAdmin::SupplierAdmin
00672    {
00676       readonly attribute AdminID MyID;
00677 
00681       readonly attribute EventChannel MyChannel;
00682 
00687       readonly attribute InterFilterGroupOperator MyOperator;
00688 
00692       readonly attribute ProxyIDSeq pull_consumers;
00693 
00697       readonly attribute ProxyIDSeq push_consumers;
00698 
00705       ProxyConsumer get_proxy_consumer (
00706          in ProxyID proxy_id )
00707          raises ( ProxyNotFound );
00708 
00718       ProxyConsumer obtain_notification_pull_consumer (
00719          in ClientType ctype,
00720          out ProxyID proxy_id)
00721          raises ( AdminLimitExceeded );
00722 
00732       ProxyConsumer obtain_notification_push_consumer (
00733          in ClientType ctype,
00734          out ProxyID proxy_id)
00735          raises ( AdminLimitExceeded );
00736 
00740       void destroy();
00741 
00742    }; // SupplierAdmin
00743 
00747    interface EventChannel :
00748       CosNotification::QoSAdmin,
00749       CosNotification::AdminPropertiesAdmin,
00750       CosEventChannelAdmin::EventChannel
00751    {
00755       readonly attribute EventChannelFactory MyFactory;
00756 
00761       readonly attribute ConsumerAdmin default_consumer_admin;
00762 
00767       readonly attribute SupplierAdmin default_supplier_admin;
00768 
00772       readonly attribute CosNotifyFilter::FilterFactory default_filter_factory;
00773 
00783       ConsumerAdmin new_for_consumers(
00784          in InterFilterGroupOperator op,
00785          out AdminID id );
00786 
00796       SupplierAdmin new_for_suppliers(
00797          in InterFilterGroupOperator op,
00798          out AdminID id );
00799 
00808       ConsumerAdmin get_consumeradmin ( in AdminID id )
00809          raises (AdminNotFound);
00810 
00819       SupplierAdmin get_supplieradmin ( in AdminID id )
00820          raises (AdminNotFound);
00821 
00826       AdminIDSeq get_all_consumeradmins();
00827 
00832       AdminIDSeq get_all_supplieradmins();
00833 
00834    }; // EventChannel
00835 
00839    typedef long ChannelID;
00840 
00844    typedef sequence<ChannelID> ChannelIDSeq;
00845 
00849    exception ChannelNotFound {};
00850 
00854    interface EventChannelFactory
00855    {
00869       EventChannel create_channel (
00870          in CosNotification::QoSProperties initial_qos,
00871          in CosNotification::AdminProperties initial_admin,
00872          out ChannelID id)
00873          raises(CosNotification::UnsupportedQoS,
00874                 CosNotification::UnsupportedAdmin );
00875 
00880       ChannelIDSeq get_all_channels();
00881 
00889       EventChannel get_event_channel ( in ChannelID id )
00890          raises (ChannelNotFound);
00891 
00892    }; // EventChannelFactory
00893 
00894 }; // CosNotifyChannelAdmin
00895 
00896 #endif /* COSNOTIFYCHANNELADMIN_IDL */