div class="twikiTopBar">

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

CosNotifyChannelAdmin.idl

00001 //File: CosNotifyChannelAdmin.idl
00002 //Part of the Notification Service
00003 
00004 #ifndef _COS_NOTIFY_CHANNEL_ADMIN_IDL_
00005 #define _COS_NOTIFY_CHANNEL_ADMIN_IDL_
00006 
00007 // omniORB specific pragmas to insert extra includes into the stub header.
00008 
00009 #include <CosNotification.idl>
00010 #include <CosNotifyFilter.idl>
00011 #include <CosNotifyComm.idl>
00012 #include <CosEventChannelAdmin.idl>
00013 
00014 #pragma prefix "omg.org"
00015 
00016 module CosNotifyChannelAdmin {
00017 
00018         exception ConnectionAlreadyActive {};
00019         exception ConnectionAlreadyInactive {};
00020         exception NotConnected {};
00021 
00022         // Forward declarations
00023         interface ConsumerAdmin;
00024         interface SupplierAdmin;
00025         interface EventChannel;
00026         interface EventChannelFactory;
00027 
00028         enum ProxyType {
00029                 PUSH_ANY,
00030                 PULL_ANY,
00031                 PUSH_STRUCTURED,
00032                 PULL_STRUCTURED,
00033                 PUSH_SEQUENCE,
00034                 PULL_SEQUENCE,
00035                 PUSH_TYPED,
00036                 PULL_TYPED
00037         };
00038 
00039         enum ObtainInfoMode {
00040                 ALL_NOW_UPDATES_OFF,
00041                 ALL_NOW_UPDATES_ON,
00042                 NONE_NOW_UPDATES_OFF,
00043                 NONE_NOW_UPDATES_ON
00044         };
00045 
00046         interface ProxyConsumer :
00047                         CosNotification::QoSAdmin,
00048                         CosNotifyFilter::FilterAdmin {
00049 
00050                 readonly attribute ProxyType MyType;
00051                 readonly attribute SupplierAdmin MyAdmin;
00052 
00053                 CosNotification::EventTypeSeq obtain_subscription_types(
00054                                 in ObtainInfoMode mode );
00055 
00056                 void validate_event_qos (
00057                    in CosNotification::QoSProperties required_qos,
00058                    out CosNotification::NamedPropertyRangeSeq available_qos)
00059                         raises (CosNotification::UnsupportedQoS);
00060 
00061         }; // ProxyConsumer
00062 
00063         interface ProxySupplier :
00064                         CosNotification::QoSAdmin,
00065                         CosNotifyFilter::FilterAdmin {
00066 
00067                 readonly attribute ProxyType MyType;
00068                 readonly attribute ConsumerAdmin MyAdmin;
00069 
00070                 attribute CosNotifyFilter::MappingFilter priority_filter;
00071                 attribute CosNotifyFilter::MappingFilter lifetime_filter;
00072 
00073                 CosNotification::EventTypeSeq obtain_offered_types(
00074                                 in ObtainInfoMode mode );
00075 
00076                 void validate_event_qos (
00077                  in CosNotification::QoSProperties required_qos,
00078                  out CosNotification::NamedPropertyRangeSeq available_qos)
00079                         raises (CosNotification::UnsupportedQoS);
00080 
00081         }; // ProxySupplier
00082 
00083         interface ProxyPushConsumer : 
00084                         ProxyConsumer,
00085                         CosNotifyComm::PushConsumer {
00086 
00087                 void connect_any_push_supplier (
00088                                 in CosEventComm::PushSupplier push_supplier)
00089                         raises(CosEventChannelAdmin::AlreadyConnected);
00090 
00091         }; // ProxyPushConsumer
00092 
00093         interface StructuredProxyPushConsumer : 
00094                         ProxyConsumer,
00095                         CosNotifyComm::StructuredPushConsumer {
00096 
00097                 void connect_structured_push_supplier (
00098                         in CosNotifyComm::StructuredPushSupplier push_supplier)
00099                         raises(CosEventChannelAdmin::AlreadyConnected);
00100 
00101         }; // StructuredProxyPushConsumer
00102 
00103         interface SequenceProxyPushConsumer : 
00104                         ProxyConsumer,
00105                         CosNotifyComm::SequencePushConsumer {
00106 
00107                 void connect_sequence_push_supplier (
00108                         in CosNotifyComm::SequencePushSupplier push_supplier)
00109                         raises(CosEventChannelAdmin::AlreadyConnected);
00110 
00111         }; // SequenceProxyPushConsumer
00112 
00113         interface ProxyPullSupplier : 
00114                         ProxySupplier,
00115                         CosNotifyComm::PullSupplier {
00116 
00117                 void connect_any_pull_consumer (
00118                                 in CosEventComm::PullConsumer pull_consumer)
00119                         raises(CosEventChannelAdmin::AlreadyConnected);
00120 
00121         }; // ProxyPullSupplier
00122 
00123         interface StructuredProxyPullSupplier : 
00124                         ProxySupplier,
00125                         CosNotifyComm::StructuredPullSupplier {
00126 
00127                 void connect_structured_pull_consumer (
00128                         in CosNotifyComm::StructuredPullConsumer pull_consumer)
00129                         raises(CosEventChannelAdmin::AlreadyConnected);
00130 
00131         }; // StructuredProxyPullSupplier
00132 
00133         interface SequenceProxyPullSupplier : 
00134                         ProxySupplier,
00135                         CosNotifyComm::SequencePullSupplier {
00136 
00137                 void connect_sequence_pull_consumer (
00138                         in CosNotifyComm::SequencePullConsumer pull_consumer)
00139                         raises(CosEventChannelAdmin::AlreadyConnected);
00140 
00141         }; // SequenceProxyPullSupplier
00142 
00143         interface ProxyPullConsumer : 
00144                         ProxyConsumer,
00145                         CosNotifyComm::PullConsumer {
00146 
00147                 void connect_any_pull_supplier (
00148                                 in CosEventComm::PullSupplier pull_supplier)
00149                         raises(CosEventChannelAdmin::AlreadyConnected,
00150                                         CosEventChannelAdmin::TypeError );
00151 
00152                 void suspend_connection()
00153                         raises(ConnectionAlreadyInactive, NotConnected);
00154 
00155                 void resume_connection()
00156                         raises(ConnectionAlreadyActive, NotConnected);
00157 
00158         }; // ProxyPullConsumer
00159 
00160         interface StructuredProxyPullConsumer : 
00161                         ProxyConsumer,
00162                         CosNotifyComm::StructuredPullConsumer {
00163 
00164                 void connect_structured_pull_supplier (
00165                         in CosNotifyComm::StructuredPullSupplier pull_supplier)
00166                         raises(CosEventChannelAdmin::AlreadyConnected,
00167                                         CosEventChannelAdmin::TypeError );
00168 
00169                 void suspend_connection()
00170                         raises(ConnectionAlreadyInactive, NotConnected);
00171 
00172                 void resume_connection()
00173                         raises(ConnectionAlreadyActive, NotConnected);
00174 
00175         }; // StructuredProxyPullConsumer
00176 
00177         interface SequenceProxyPullConsumer : 
00178                         ProxyConsumer,
00179                         CosNotifyComm::SequencePullConsumer {
00180 
00181                 void connect_sequence_pull_supplier (
00182                         in CosNotifyComm::SequencePullSupplier pull_supplier)
00183                         raises(CosEventChannelAdmin::AlreadyConnected,
00184                                         CosEventChannelAdmin::TypeError );
00185 
00186                 void suspend_connection()
00187                         raises(ConnectionAlreadyInactive, NotConnected);
00188 
00189                 void resume_connection()
00190                         raises(ConnectionAlreadyActive, NotConnected);
00191 
00192         }; // SequenceProxyPullConsumer
00193 
00194         interface ProxyPushSupplier : 
00195                         ProxySupplier,
00196                         CosNotifyComm::PushSupplier {
00197 
00198                 void connect_any_push_consumer (
00199                                 in CosEventComm::PushConsumer push_consumer)
00200                         raises(CosEventChannelAdmin::AlreadyConnected,
00201                                         CosEventChannelAdmin::TypeError );
00202 
00203                 void suspend_connection()
00204                         raises(ConnectionAlreadyInactive, NotConnected);
00205 
00206                 void resume_connection()
00207                         raises(ConnectionAlreadyActive, NotConnected);
00208 
00209         }; // ProxyPushSupplier
00210 
00211         interface StructuredProxyPushSupplier : 
00212                         ProxySupplier,
00213                         CosNotifyComm::StructuredPushSupplier {
00214 
00215                 void connect_structured_push_consumer (
00216                         in CosNotifyComm::StructuredPushConsumer push_consumer)
00217                         raises(CosEventChannelAdmin::AlreadyConnected,
00218                                         CosEventChannelAdmin::TypeError );
00219 
00220                 void suspend_connection()
00221                         raises(ConnectionAlreadyInactive, NotConnected);
00222 
00223                 void resume_connection()
00224                         raises(ConnectionAlreadyActive, NotConnected);
00225 
00226         }; // StructuredProxyPushSupplier
00227 
00228         interface SequenceProxyPushSupplier : 
00229                         ProxySupplier,
00230                         CosNotifyComm::SequencePushSupplier {
00231 
00232                 void connect_sequence_push_consumer (
00233                         in CosNotifyComm::SequencePushConsumer push_consumer)
00234                         raises(CosEventChannelAdmin::AlreadyConnected,
00235                                         CosEventChannelAdmin::TypeError );
00236 
00237                 void suspend_connection()
00238                         raises(ConnectionAlreadyInactive, NotConnected);
00239 
00240                 void resume_connection()
00241                         raises(ConnectionAlreadyActive, NotConnected);
00242 
00243         }; // SequenceProxyPushSupplier
00244 
00245         typedef long ProxyID;
00246         typedef sequence <ProxyID> ProxyIDSeq;
00247 
00248         enum ClientType {
00249                 ANY_EVENT,
00250                 STRUCTURED_EVENT,
00251                 SEQUENCE_EVENT
00252         };
00253 
00254         enum InterFilterGroupOperator { AND_OP, OR_OP };
00255 
00256         typedef long AdminID;
00257         typedef sequence<AdminID> AdminIDSeq;
00258 
00259         exception AdminNotFound {};
00260         exception ProxyNotFound {};
00261 
00262         struct AdminLimit {
00263                 CosNotification::PropertyName name;
00264                 CosNotification::PropertyValue value;
00265         };
00266 
00267         exception AdminLimitExceeded { AdminLimit admin_property_err; };
00268 
00269         interface ConsumerAdmin : 
00270                         CosNotification::QoSAdmin,
00271                         CosNotifyComm::NotifySubscribe,
00272                         CosNotifyFilter::FilterAdmin,
00273                         CosEventChannelAdmin::ConsumerAdmin {
00274 
00275                 readonly attribute AdminID MyID;
00276                 readonly attribute EventChannel MyChannel;
00277 
00278                 readonly attribute InterFilterGroupOperator MyOperator;
00279 
00280                 attribute CosNotifyFilter::MappingFilter priority_filter;
00281                 attribute CosNotifyFilter::MappingFilter lifetime_filter;
00282 
00283                 readonly attribute ProxyIDSeq pull_suppliers;
00284                 readonly attribute ProxyIDSeq push_suppliers;
00285 
00286                 ProxySupplier get_proxy_supplier (
00287                                 in ProxyID proxy_id )
00288                         raises ( ProxyNotFound );
00289 
00290                 ProxySupplier obtain_notification_pull_supplier (
00291                                 in ClientType ctype,
00292                                 out ProxyID proxy_id)
00293                         raises ( AdminLimitExceeded );
00294 
00295                 ProxySupplier obtain_notification_push_supplier (
00296                                 in ClientType ctype,
00297                                 out ProxyID proxy_id)
00298                         raises ( AdminLimitExceeded );
00299 
00300                 void destroy();
00301 
00302         }; // ConsumerAdmin
00303 
00304         interface SupplierAdmin : 
00305                         CosNotification::QoSAdmin,
00306                         CosNotifyComm::NotifyPublish,
00307                         CosNotifyFilter::FilterAdmin,
00308                         CosEventChannelAdmin::SupplierAdmin {
00309 
00310                 readonly attribute AdminID MyID;
00311                 readonly attribute EventChannel MyChannel;
00312 
00313                 readonly attribute InterFilterGroupOperator MyOperator;
00314 
00315                 readonly attribute ProxyIDSeq pull_consumers;
00316                 readonly attribute ProxyIDSeq push_consumers;
00317 
00318                 ProxyConsumer get_proxy_consumer (
00319                                 in ProxyID proxy_id )
00320                         raises ( ProxyNotFound );
00321 
00322                 ProxyConsumer obtain_notification_pull_consumer (
00323                                 in ClientType ctype,
00324                                 out ProxyID proxy_id)
00325                         raises ( AdminLimitExceeded );
00326 
00327                 ProxyConsumer obtain_notification_push_consumer (
00328                                 in ClientType ctype,
00329                                 out ProxyID proxy_id)
00330                         raises ( AdminLimitExceeded );
00331 
00332                 void destroy();
00333 
00334         }; // SupplierAdmin
00335 
00336         interface EventChannel :
00337                 CosNotification::QoSAdmin,
00338                 CosNotification::AdminPropertiesAdmin,
00339                 CosEventChannelAdmin::EventChannel {
00340 
00341                 readonly attribute EventChannelFactory MyFactory;
00342 
00343                 readonly attribute ConsumerAdmin default_consumer_admin;
00344                 readonly attribute SupplierAdmin default_supplier_admin;
00345 
00346                 readonly attribute CosNotifyFilter::FilterFactory
00347                                                 default_filter_factory;
00348 
00349                 ConsumerAdmin new_for_consumers(
00350                                 in InterFilterGroupOperator op,
00351                                 out AdminID id );
00352 
00353                 SupplierAdmin new_for_suppliers(
00354                                 in InterFilterGroupOperator op,
00355                                 out AdminID id );
00356 
00357                 ConsumerAdmin get_consumeradmin ( in AdminID id )
00358                         raises (AdminNotFound);
00359 
00360                 SupplierAdmin get_supplieradmin ( in AdminID id )
00361                         raises (AdminNotFound);
00362 
00363                 AdminIDSeq get_all_consumeradmins();
00364                 AdminIDSeq get_all_supplieradmins();
00365 
00366         }; // EventChannel
00367 
00368         typedef long ChannelID;
00369         typedef sequence<ChannelID> ChannelIDSeq;
00370 
00371         exception ChannelNotFound {};
00372 
00373         interface EventChannelFactory {
00374 
00375                 EventChannel create_channel (
00376                         in CosNotification::QoSProperties initial_qos,
00377                         in CosNotification::AdminProperties initial_admin,
00378                                 out ChannelID id)
00379                         raises(CosNotification::UnsupportedQoS,
00380                                         CosNotification::UnsupportedAdmin );
00381 
00382                 ChannelIDSeq get_all_channels();
00383 
00384                 EventChannel get_event_channel ( in ChannelID id )
00385                         raises (ChannelNotFound);
00386 
00387         }; // EventChannelFactory
00388 
00389 }; // CosNotifyChannelAdmin
00390 
00391 #endif /* _COS_NOTIFY_CHANNEL_ADMIN_IDL_ */

CosNotifyChannelAdmin.idl Source File | generated on Sun Apr 29 02:00:57 2007 by Doxygen 1.4.1 for DWARF