00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef TAO_Notify_EVENTCHANNEL_H
00013 #define TAO_Notify_EVENTCHANNEL_H
00014
00015 #include "ace/pre.h"
00016
00017 #include "orbsvcs/Notify/notify_serv_export.h"
00018
00019 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00020 # pragma once
00021 #endif
00022
00023 #include "orbsvcs/CosNotifyChannelAdminS.h"
00024 #include "orbsvcs/Notify/Topology_Object.h"
00025 #include "orbsvcs/Notify/Object.h"
00026 #include "orbsvcs/Notify/EventChannelFactory.h"
00027
00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00029
00030 class TAO_Notify_ConsumerAdmin;
00031 class TAO_Notify_SupplierAdmin;
00032 class TAO_Notify_EventChannelFactory;
00033 class TAO_Notify_ProxyConsumer;
00034 class TAO_Notify_ProxySupplier;
00035 template <class TYPE> class TAO_Notify_Container_T;
00036
00037 #if defined(_MSC_VER)
00038 #pragma warning(push)
00039 #pragma warning(disable:4250)
00040 #endif
00041
00042
00043
00044
00045
00046
00047
00048 class TAO_Notify_Serv_Export TAO_Notify_EventChannel
00049 : public POA_CosNotifyChannelAdmin::EventChannel,
00050 public TAO_Notify::Topology_Parent
00051 {
00052 friend class TAO_Notify_Builder;
00053
00054 public:
00055 typedef TAO_Notify_Refcountable_Guard_T< TAO_Notify_EventChannel > Ptr;
00056 typedef CosNotifyChannelAdmin::ChannelIDSeq SEQ;
00057 typedef CosNotifyChannelAdmin::ChannelIDSeq_var SEQ_VAR;
00058
00059
00060 TAO_Notify_EventChannel (void);
00061
00062
00063 virtual ~TAO_Notify_EventChannel ();
00064
00065
00066 void init (TAO_Notify_EventChannelFactory* ecf
00067 , const CosNotification::QoSProperties & initial_qos
00068 , const CosNotification::AdminProperties & initial_admin
00069 ACE_ENV_ARG_DECL);
00070
00071
00072 void init (TAO_Notify::Topology_Parent * parent
00073 ACE_ENV_ARG_DECL);
00074
00075
00076 void remove (TAO_Notify_ConsumerAdmin* consumer_admin ACE_ENV_ARG_DECL);
00077
00078
00079 void remove (TAO_Notify_SupplierAdmin* supplier_admin ACE_ENV_ARG_DECL);
00080
00081
00082 virtual void _add_ref (ACE_ENV_SINGLE_ARG_DECL);
00083 virtual void _remove_ref (ACE_ENV_SINGLE_ARG_DECL);
00084
00085
00086
00087 virtual void save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL);
00088 virtual TAO_Notify::Topology_Object* load_child (const ACE_CString &type,
00089 CORBA::Long id,
00090 const TAO_Notify::NVPList& attrs
00091 ACE_ENV_ARG_DECL);
00092 virtual void reconnect (ACE_ENV_SINGLE_ARG_DECL);
00093
00094 virtual TAO_Notify_Object::ID get_id () const {return id();}
00095
00096 TAO_Notify_ProxyConsumer * find_proxy_consumer (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL);
00097 TAO_Notify_ProxySupplier * find_proxy_supplier (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL);
00098
00099
00100 virtual int shutdown (ACE_ENV_SINGLE_ARG_DECL);
00101 virtual void load_attrs(const TAO_Notify::NVPList& attrs);
00102
00103 private:
00104 typedef TAO_Notify_Container_T <TAO_Notify_ConsumerAdmin> TAO_Notify_ConsumerAdmin_Container;
00105 typedef TAO_Notify_Container_T <TAO_Notify_SupplierAdmin> TAO_Notify_SupplierAdmin_Container;
00106
00107 virtual void save_attrs(TAO_Notify::NVPList& attrs);
00108
00109
00110
00111 TAO_Notify_EventChannelFactory::Ptr ecf_;
00112
00113 TAO_SYNCH_MUTEX default_admin_mutex_;
00114
00115
00116 CosNotifyChannelAdmin::ConsumerAdmin_var default_consumer_admin_;
00117
00118
00119 CosNotifyChannelAdmin::SupplierAdmin_var default_supplier_admin_;
00120
00121
00122
00123 virtual void destroy (ACE_ENV_SINGLE_ARG_DECL)
00124 ACE_THROW_SPEC ((
00125 CORBA::SystemException
00126 ));
00127
00128 virtual ::CosNotifyChannelAdmin::EventChannelFactory_ptr MyFactory (ACE_ENV_SINGLE_ARG_DECL
00129 )
00130 ACE_THROW_SPEC ((
00131 CORBA::SystemException
00132 ));
00133
00134 virtual ::CosNotifyChannelAdmin::ConsumerAdmin_ptr default_consumer_admin (ACE_ENV_SINGLE_ARG_DECL
00135
00136 )
00137 ACE_THROW_SPEC ((
00138 CORBA::SystemException
00139 ));
00140
00141 virtual ::CosNotifyChannelAdmin::SupplierAdmin_ptr default_supplier_admin (ACE_ENV_SINGLE_ARG_DECL
00142
00143 )
00144 ACE_THROW_SPEC ((
00145 CORBA::SystemException
00146 ));
00147
00148 virtual ::CosNotifyFilter::FilterFactory_ptr default_filter_factory (ACE_ENV_SINGLE_ARG_DECL)
00149 ACE_THROW_SPEC ((
00150 CORBA::SystemException
00151 ));
00152
00153 virtual ::CosNotifyChannelAdmin::ConsumerAdmin_ptr new_for_consumers (CosNotifyChannelAdmin::InterFilterGroupOperator op,
00154 CosNotifyChannelAdmin::AdminID_out id
00155 ACE_ENV_ARG_DECL)
00156 ACE_THROW_SPEC ((
00157 CORBA::SystemException
00158 ));
00159
00160 virtual ::CosNotifyChannelAdmin::SupplierAdmin_ptr new_for_suppliers (CosNotifyChannelAdmin::InterFilterGroupOperator op,
00161 CosNotifyChannelAdmin::AdminID_out id
00162 ACE_ENV_ARG_DECL)
00163 ACE_THROW_SPEC ((
00164 CORBA::SystemException
00165 ));
00166
00167 virtual ::CosNotifyChannelAdmin::ConsumerAdmin_ptr get_consumeradmin (CosNotifyChannelAdmin::AdminID id
00168 ACE_ENV_ARG_DECL)
00169 ACE_THROW_SPEC ((
00170 CORBA::SystemException
00171 , CosNotifyChannelAdmin::AdminNotFound
00172 ));
00173
00174 virtual ::CosNotifyChannelAdmin::SupplierAdmin_ptr get_supplieradmin (CosNotifyChannelAdmin::AdminID id
00175 ACE_ENV_ARG_DECL)
00176 ACE_THROW_SPEC ((
00177 CORBA::SystemException
00178 , CosNotifyChannelAdmin::AdminNotFound
00179 ));
00180
00181 virtual ::CosNotifyChannelAdmin::AdminIDSeq * get_all_consumeradmins (ACE_ENV_SINGLE_ARG_DECL)
00182 ACE_THROW_SPEC ((
00183 CORBA::SystemException
00184 ));
00185
00186 virtual ::CosNotifyChannelAdmin::AdminIDSeq * get_all_supplieradmins (ACE_ENV_SINGLE_ARG_DECL)
00187 ACE_THROW_SPEC ((
00188 CORBA::SystemException
00189 ));
00190
00191 virtual ::CosNotification::QoSProperties * get_qos (ACE_ENV_SINGLE_ARG_DECL)
00192 ACE_THROW_SPEC ((
00193 CORBA::SystemException
00194 ));
00195
00196 virtual void set_qos (const CosNotification::QoSProperties & qos
00197 ACE_ENV_ARG_DECL)
00198 ACE_THROW_SPEC ((
00199 CORBA::SystemException
00200 , CosNotification::UnsupportedQoS
00201 ));
00202
00203 virtual void validate_qos (const CosNotification::QoSProperties & required_qos,
00204 CosNotification::NamedPropertyRangeSeq_out available_qos
00205 ACE_ENV_ARG_DECL)
00206 ACE_THROW_SPEC ((
00207 CORBA::SystemException
00208 , CosNotification::UnsupportedQoS
00209 ));
00210
00211 virtual ::CosNotification::AdminProperties * get_admin (ACE_ENV_SINGLE_ARG_DECL)
00212 ACE_THROW_SPEC ((
00213 CORBA::SystemException
00214 ));
00215
00216 virtual void set_admin (const CosNotification::AdminProperties & admin ACE_ENV_ARG_DECL)
00217 ACE_THROW_SPEC ((
00218 CORBA::SystemException
00219 , CosNotification::UnsupportedAdmin
00220 ));
00221
00222 virtual ::CosEventChannelAdmin::ConsumerAdmin_ptr for_consumers (ACE_ENV_SINGLE_ARG_DECL)
00223 ACE_THROW_SPEC ((
00224 CORBA::SystemException
00225 ));
00226
00227 virtual ::CosEventChannelAdmin::SupplierAdmin_ptr for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
00228 ACE_THROW_SPEC ((
00229 CORBA::SystemException
00230 ));
00231
00232 private:
00233 TAO_Notify_ConsumerAdmin_Container& ca_container();
00234 TAO_Notify_SupplierAdmin_Container& sa_container();
00235
00236
00237 ACE_Auto_Ptr< TAO_Notify_ConsumerAdmin_Container > ca_container_;
00238
00239
00240 ACE_Auto_Ptr< TAO_Notify_SupplierAdmin_Container > sa_container_;
00241
00242
00243 virtual void release (void);
00244 };
00245
00246 TAO_END_VERSIONED_NAMESPACE_DECL
00247
00248 #if defined(_MSC_VER)
00249 #pragma warning(pop)
00250 #endif
00251
00252 #include "ace/post.h"
00253
00254 #endif