EventChannel.h

Go to the documentation of this file.
00001 /* -*- C++ -*- */
00002 /**
00003  *  @file EventChannel.h
00004  *
00005  *  EventChannel.h,v 1.21 2006/03/14 06:14:34 jtc Exp
00006  *
00007  *  @author Pradeep Gore <pradeep@oomworks.com>
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 /* ACE_LACKS_PRAGMA_ONCE */
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 /* _MSC_VER */
00041 
00042 /**
00043  * @class TAO_Notify_EventChannel
00044  *
00045  * @brief Implementation of CosNotifyChannelAdmin::EventChannel
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   /// Constuctor
00060   TAO_Notify_EventChannel (void);
00061 
00062   /// Destructor
00063   virtual ~TAO_Notify_EventChannel ();
00064 
00065   /// Init
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   /// Init (for reload)
00072   void init (TAO_Notify::Topology_Parent * parent
00073              ACE_ENV_ARG_DECL);
00074 
00075   /// Remove ConsumerAdmin from its container.
00076   void remove (TAO_Notify_ConsumerAdmin* consumer_admin ACE_ENV_ARG_DECL);
00077 
00078   /// Remove SupplierAdmin from its container.
00079   void remove (TAO_Notify_SupplierAdmin* supplier_admin ACE_ENV_ARG_DECL);
00080 
00081   /// ServantBase refcount methods.
00082   virtual void _add_ref (ACE_ENV_SINGLE_ARG_DECL);
00083   virtual void _remove_ref (ACE_ENV_SINGLE_ARG_DECL);
00084 
00085   // TAO_Notify::Topology_Parent
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   /// Shutdown
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   /// = Data Members
00110   /// The parent object.
00111   TAO_Notify_EventChannelFactory::Ptr ecf_;
00112 
00113   TAO_SYNCH_MUTEX default_admin_mutex_;
00114 
00115   // Default Consumer Admin
00116   CosNotifyChannelAdmin::ConsumerAdmin_var default_consumer_admin_;
00117 
00118   // Default Supplier Admin
00119   CosNotifyChannelAdmin::SupplierAdmin_var default_supplier_admin_;
00120 
00121   /// =CosNotifyChannelAdmin::EventChannel methods
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   /// ConsumerAdmin Container.
00237   ACE_Auto_Ptr< TAO_Notify_ConsumerAdmin_Container > ca_container_;
00238 
00239   /// SupplierAdmin Container.
00240   ACE_Auto_Ptr< TAO_Notify_SupplierAdmin_Container > sa_container_;
00241 
00242   /// Release
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 /* _MSC_VER */
00251 
00252 #include /**/ "ace/post.h"
00253 
00254 #endif /* TAO_Notify_EVENTCHANNEL_H */

Generated on Thu Nov 9 13:24:11 2006 for TAO_CosNotification by doxygen 1.3.6