00001 // -*- C++ -*- 00002 00003 /** 00004 * @file Properties.h 00005 * 00006 * $Id: Properties.h 78802 2007-07-05 18:51:19Z johnnyw $ 00007 * 00008 * @author Pradeep Gore <pradeep@oomworks.com> 00009 */ 00010 00011 #ifndef TAO_Notify_PROPERTIES_H 00012 #define TAO_Notify_PROPERTIES_H 00013 00014 #include /**/ "ace/pre.h" 00015 00016 #include "orbsvcs/Notify/notify_serv_export.h" 00017 00018 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00019 # pragma once 00020 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00021 00022 #include "orbsvcs/CosNotificationC.h" 00023 00024 #include "tao/PortableServer/PortableServer.h" 00025 00026 #include "tao/TAO_Singleton.h" 00027 #include "tao/ORB.h" 00028 00029 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00030 00031 class TAO_Notify_Factory; 00032 class TAO_Notify_Builder; 00033 00034 /** 00035 * @class TAO_Notify_Properties 00036 * 00037 * @brief Global properties that strategize Notify's run-time behaviour. 00038 * 00039 */ 00040 class TAO_Notify_Serv_Export TAO_Notify_Properties 00041 { 00042 public: 00043 /// Constuctor 00044 TAO_Notify_Properties (void); 00045 00046 /// Destructor 00047 ~TAO_Notify_Properties (); 00048 00049 /// Return a singleton instance of this class. 00050 static TAO_Notify_Properties * instance (void); 00051 00052 // = Property Accessors 00053 TAO_Notify_Factory* factory (void); 00054 void factory (TAO_Notify_Factory* factory); 00055 00056 TAO_Notify_Builder* builder (void); 00057 void builder (TAO_Notify_Builder* builder); 00058 00059 CORBA::ORB_ptr orb (void); 00060 void orb (CORBA::ORB_ptr orb); 00061 CORBA::ORB_ptr dispatching_orb (void); 00062 void dispatching_orb (CORBA::ORB_ptr dispatching_orb); 00063 00064 PortableServer::POA_ptr default_poa (void); 00065 void default_poa (PortableServer::POA_ptr default_poa); 00066 00067 CORBA::Boolean asynch_updates (void); 00068 void asynch_updates (CORBA::Boolean asynch_updates); 00069 00070 bool allow_reconnect (void); 00071 void allow_reconnect (bool b); 00072 00073 // Turn on/off update messages. 00074 CORBA::Boolean updates (void); 00075 void updates (CORBA::Boolean updates); 00076 bool separate_dispatching_orb (void); 00077 void separate_dispatching_orb (bool b); 00078 00079 // The QoS Property that must be applied to each newly created Event Channel 00080 const CosNotification::QoSProperties& default_event_channel_qos_properties (void); 00081 00082 // Set the default EC QoS Property. 00083 void default_event_channel_qos_properties (const CosNotification::QoSProperties &ec_qos); 00084 00085 // The QoS Property that must be applied to each newly created Supplier Admin 00086 const CosNotification::QoSProperties& default_supplier_admin_qos_properties (void); 00087 00088 // Set the default SA QoS Property. 00089 void default_supplier_admin_qos_properties (const CosNotification::QoSProperties &sa_qos); 00090 00091 // The QoS Property that must be applied to each newly created Consumer Admin 00092 const CosNotification::QoSProperties& default_consumer_admin_qos_properties (void); 00093 00094 // Set the default CA QoS Property. 00095 void default_consumer_admin_qos_properties (const CosNotification::QoSProperties &ca_qos); 00096 00097 // The QoS Property that must be applied to each newly created Proxy Supplier 00098 const CosNotification::QoSProperties& default_proxy_supplier_qos_properties (void); 00099 00100 // Set the default PS QoS Property. 00101 void default_proxy_supplier_qos_properties (const CosNotification::QoSProperties &ps_qos); 00102 00103 // The QoS Property that must be applied to each newly created Proxy Consumer 00104 const CosNotification::QoSProperties& default_proxy_consumer_qos_properties (void); 00105 00106 // Set the default PC QoS Property. 00107 void default_proxy_consumer_qos_properties (const CosNotification::QoSProperties &pc_qos); 00108 00109 protected: 00110 /// Object Factory 00111 TAO_Notify_Factory* factory_; 00112 00113 /// Object Builder 00114 TAO_Notify_Builder* builder_; 00115 00116 /// ORB 00117 CORBA::ORB_var orb_; 00118 00119 /// dispatching orb 00120 CORBA::ORB_var dispatching_orb_; 00121 00122 // POA 00123 PortableServer::POA_var default_poa_; 00124 00125 /// True if send asynch updates. 00126 CORBA::Boolean asynch_updates_; 00127 00128 /// True if clients can reconnect to proxies. 00129 bool allow_reconnect_; 00130 00131 /// True is separate dispatching orb 00132 bool separate_dispatching_orb_; 00133 00134 /// True if updates are enabled (default). 00135 CORBA::Boolean updates_; 00136 00137 /// The Update period for updates. 00138 ACE_Time_Value update_period_; 00139 00140 /// The default EC QoS Properties. 00141 CosNotification::QoSProperties ec_qos_; 00142 00143 /// The default SA QoS Properties. 00144 CosNotification::QoSProperties sa_qos_; 00145 00146 /// The default CA QoS Properties. 00147 CosNotification::QoSProperties ca_qos_; 00148 00149 /// The default PS QoS Properties. 00150 CosNotification::QoSProperties ps_qos_; 00151 00152 /// The default PC QoS Properties. 00153 CosNotification::QoSProperties pc_qos_; 00154 }; 00155 00156 /** 00157 * @todo Remove this legacy TAO_Notify_Properties typedef. 00158 */ 00159 typedef TAO_Notify_Properties TAO_Notify_PROPERTIES; 00160 00161 TAO_END_VERSIONED_NAMESPACE_DECL 00162 00163 #if defined (__ACE_INLINE__) 00164 #include "orbsvcs/Notify/Properties.inl" 00165 #endif /* __ACE_INLINE__ */ 00166 00167 #include /**/ "ace/post.h" 00168 00169 #endif /* TAO_Notify_PROPERTIES_H */