Go to the documentation of this file.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 #include "orbsvcs/Notify/FilterFactory.h"
00028
00029 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00030
00031 class TAO_Notify_FilterFactory;
00032 class TAO_Notify_ConsumerAdmin;
00033 class TAO_Notify_SupplierAdmin;
00034 class TAO_Notify_EventChannelFactory;
00035 class TAO_Notify_ProxyConsumer;
00036 class TAO_Notify_ProxySupplier;
00037 template <class TYPE> class TAO_Notify_Container_T;
00038
00039 #if defined(_MSC_VER)
00040 #pragma warning(push)
00041 #pragma warning(disable:4250)
00042 #endif
00043
00044
00045
00046
00047
00048
00049
00050 class TAO_Notify_Serv_Export TAO_Notify_EventChannel
00051 : public virtual POA_CosNotifyChannelAdmin::EventChannel,
00052 public TAO_Notify::Topology_Parent
00053 {
00054 friend class TAO_Notify_Builder;
00055
00056 public:
00057 typedef TAO_Notify_Refcountable_Guard_T< TAO_Notify_EventChannel > Ptr;
00058 typedef CosNotifyChannelAdmin::ChannelIDSeq SEQ;
00059 typedef CosNotifyChannelAdmin::ChannelIDSeq_var SEQ_VAR;
00060
00061
00062 TAO_Notify_EventChannel (void);
00063
00064
00065 virtual ~TAO_Notify_EventChannel ();
00066
00067
00068 void init (TAO_Notify_EventChannelFactory* ecf
00069 , const CosNotification::QoSProperties & initial_qos
00070 , const CosNotification::AdminProperties & initial_admin);
00071
00072
00073 void init (TAO_Notify::Topology_Parent * parent);
00074
00075
00076 void remove (TAO_Notify_ConsumerAdmin* consumer_admin);
00077
00078
00079 void remove (TAO_Notify_SupplierAdmin* supplier_admin);
00080
00081
00082 virtual void _add_ref (void);
00083 virtual void _remove_ref (void);
00084
00085
00086
00087 virtual void save_persistent (TAO_Notify::Topology_Saver& saver);
00088 virtual TAO_Notify::Topology_Object* load_child (const ACE_CString &type,
00089 CORBA::Long id,
00090 const TAO_Notify::NVPList& attrs);
00091 virtual void reconnect (void);
00092 virtual void validate ();
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);
00097 TAO_Notify_ProxySupplier * find_proxy_supplier (TAO_Notify::IdVec & id_path, size_t position);
00098
00099
00100 virtual void cleanup_proxy (CosNotifyChannelAdmin::ProxyID id,
00101 bool is_supplier,
00102 bool experienced_timeout);
00103
00104
00105 virtual int shutdown (void);
00106 virtual void load_attrs(const TAO_Notify::NVPList& attrs);
00107
00108
00109 virtual void destroy (void);
00110
00111
00112 virtual CosNotifyChannelAdmin::ConsumerAdmin_ptr
00113 get_consumeradmin (CosNotifyChannelAdmin::AdminID id);
00114
00115
00116 virtual CosNotifyChannelAdmin::SupplierAdmin_ptr
00117 get_supplieradmin (CosNotifyChannelAdmin::AdminID id);
00118
00119 TAO_Notify_FilterFactory* default_filter_factory_servant () const;
00120
00121 private:
00122 typedef TAO_Notify_Container_T <TAO_Notify_ConsumerAdmin> TAO_Notify_ConsumerAdmin_Container;
00123 typedef TAO_Notify_Container_T <TAO_Notify_SupplierAdmin> TAO_Notify_SupplierAdmin_Container;
00124
00125 virtual void save_attrs(TAO_Notify::NVPList& attrs);
00126
00127
00128
00129 TAO_Notify_EventChannelFactory::Ptr ecf_;
00130
00131 TAO_SYNCH_MUTEX default_admin_mutex_;
00132
00133
00134 CosNotifyChannelAdmin::ConsumerAdmin_var default_consumer_admin_;
00135
00136
00137 CosNotifyChannelAdmin::SupplierAdmin_var default_supplier_admin_;
00138
00139 protected:
00140
00141
00142 virtual ::CosNotifyChannelAdmin::EventChannelFactory_ptr MyFactory ();
00143
00144 virtual ::CosNotifyChannelAdmin::ConsumerAdmin_ptr default_consumer_admin (void);
00145
00146 virtual ::CosNotifyChannelAdmin::SupplierAdmin_ptr default_supplier_admin (void);
00147
00148 virtual ::CosNotifyFilter::FilterFactory_ptr default_filter_factory (void);
00149
00150 virtual ::CosNotifyChannelAdmin::ConsumerAdmin_ptr new_for_consumers (CosNotifyChannelAdmin::InterFilterGroupOperator op,
00151 CosNotifyChannelAdmin::AdminID_out id);
00152
00153 virtual ::CosNotifyChannelAdmin::SupplierAdmin_ptr new_for_suppliers (CosNotifyChannelAdmin::InterFilterGroupOperator op,
00154 CosNotifyChannelAdmin::AdminID_out id);
00155
00156 virtual ::CosNotifyChannelAdmin::AdminIDSeq * get_all_consumeradmins (void);
00157
00158 virtual ::CosNotifyChannelAdmin::AdminIDSeq * get_all_supplieradmins (void);
00159
00160 virtual ::CosNotification::QoSProperties * get_qos (void);
00161
00162 virtual void set_qos (const CosNotification::QoSProperties & qos);
00163
00164 virtual void validate_qos (const CosNotification::QoSProperties & required_qos,
00165 CosNotification::NamedPropertyRangeSeq_out available_qos);
00166
00167 virtual ::CosNotification::AdminProperties * get_admin (void);
00168
00169 virtual void set_admin (const CosNotification::AdminProperties & admin);
00170
00171 virtual ::CosEventChannelAdmin::ConsumerAdmin_ptr for_consumers (void);
00172
00173 virtual ::CosEventChannelAdmin::SupplierAdmin_ptr for_suppliers (void);
00174
00175 private:
00176 TAO_Notify_ConsumerAdmin_Container& ca_container();
00177 TAO_Notify_SupplierAdmin_Container& sa_container();
00178
00179
00180 ACE_Auto_Ptr< TAO_Notify_ConsumerAdmin_Container > ca_container_;
00181
00182
00183 ACE_Auto_Ptr< TAO_Notify_SupplierAdmin_Container > sa_container_;
00184
00185
00186 CosNotifyFilter::FilterFactory_var default_filter_factory_;
00187 TAO_Notify_FilterFactory * default_filter_factory_servant_;
00188
00189 virtual void release (void);
00190 };
00191
00192 TAO_END_VERSIONED_NAMESPACE_DECL
00193
00194 #if defined(_MSC_VER)
00195 #pragma warning(pop)
00196 #endif
00197
00198 #include "ace/post.h"
00199
00200 #endif