00001 // -*- C++ -*- 00002 00003 /** 00004 * @file Proxy_T.h 00005 * 00006 * Proxy_T.h,v 1.10 2006/03/14 06:14:34 jtc Exp 00007 * 00008 * @author Pradeep Gore <pradeep@oomworks.com> 00009 * 00010 * 00011 */ 00012 00013 #ifndef TAO_Notify_PROXY_T_H 00014 #define TAO_Notify_PROXY_T_H 00015 00016 #include /**/ "ace/pre.h" 00017 00018 #include "orbsvcs/Notify/notify_serv_export.h" 00019 00020 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00021 # pragma once 00022 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00023 00024 #include "orbsvcs/Notify/Proxy.h" 00025 00026 00027 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00028 00029 /** 00030 * @class TAO_Notify_Proxy_T 00031 * 00032 * @brief The is a base class for all proxys , templatized by the servant 00033 * type. All the Filter Admin and QoS Admin interface methods are 00034 * implemented here by delegating to the admin implementations. 00035 * 00036 */ 00037 template <class SERVANT_TYPE> 00038 class TAO_Notify_Proxy_T : public SERVANT_TYPE, public virtual TAO_Notify_Proxy 00039 { 00040 public: 00041 /// Constuctor 00042 TAO_Notify_Proxy_T (void); 00043 00044 /// Destructor 00045 ~TAO_Notify_Proxy_T (); 00046 00047 /// Implements TAO_Notify_Object::servant method. 00048 virtual PortableServer::Servant servant (void); 00049 00050 /// ServantBase refcount methods. 00051 virtual void _add_ref (ACE_ENV_SINGLE_ARG_DECL); 00052 virtual void _remove_ref (ACE_ENV_SINGLE_ARG_DECL); 00053 00054 virtual void validate_event_qos ( 00055 const CosNotification::QoSProperties & required_qos, 00056 CosNotification::NamedPropertyRangeSeq_out available_qos 00057 ACE_ENV_ARG_DECL 00058 ) 00059 ACE_THROW_SPEC (( 00060 CORBA::SystemException, 00061 CosNotification::UnsupportedQoS 00062 )); 00063 00064 virtual CosNotification::QoSProperties * get_qos ( 00065 ACE_ENV_SINGLE_ARG_DECL 00066 ) 00067 ACE_THROW_SPEC (( 00068 CORBA::SystemException 00069 )); 00070 00071 virtual void set_qos ( 00072 const CosNotification::QoSProperties & qos 00073 ACE_ENV_ARG_DECL 00074 ) 00075 ACE_THROW_SPEC (( 00076 CORBA::SystemException, 00077 CosNotification::UnsupportedQoS 00078 )); 00079 00080 virtual void validate_qos ( 00081 const CosNotification::QoSProperties & required_qos, 00082 CosNotification::NamedPropertyRangeSeq_out available_qos 00083 ACE_ENV_ARG_DECL 00084 ) 00085 ACE_THROW_SPEC (( 00086 CORBA::SystemException, 00087 CosNotification::UnsupportedQoS 00088 )); 00089 00090 virtual CosNotifyFilter::FilterID add_filter ( 00091 CosNotifyFilter::Filter_ptr new_filter 00092 ACE_ENV_ARG_DECL 00093 ) 00094 ACE_THROW_SPEC (( 00095 CORBA::SystemException 00096 )); 00097 00098 virtual void remove_filter ( 00099 CosNotifyFilter::FilterID filter 00100 ACE_ENV_ARG_DECL 00101 ) 00102 ACE_THROW_SPEC (( 00103 CORBA::SystemException, 00104 CosNotifyFilter::FilterNotFound 00105 )); 00106 00107 virtual CosNotifyFilter::Filter_ptr get_filter ( 00108 CosNotifyFilter::FilterID filter 00109 ACE_ENV_ARG_DECL 00110 ) 00111 ACE_THROW_SPEC (( 00112 CORBA::SystemException, 00113 CosNotifyFilter::FilterNotFound 00114 )); 00115 00116 virtual CosNotifyFilter::FilterIDSeq * get_all_filters ( 00117 ACE_ENV_SINGLE_ARG_DECL 00118 ) 00119 ACE_THROW_SPEC (( 00120 CORBA::SystemException 00121 )); 00122 00123 virtual void remove_all_filters ( 00124 ACE_ENV_SINGLE_ARG_DECL 00125 ) 00126 ACE_THROW_SPEC (( 00127 CORBA::SystemException 00128 )); 00129 }; 00130 00131 #if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT 00132 template class TAO_Notify_Serv_Export 00133 TAO_Notify_Proxy_T<POA_Event_Forwarder::StructuredProxyPushSupplier>; 00134 template class TAO_Notify_Serv_Export 00135 TAO_Notify_Proxy_T<POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier>; 00136 template class TAO_Notify_Serv_Export 00137 TAO_Notify_Proxy_T<POA_Event_Forwarder::ProxyPushSupplier>; 00138 template class TAO_Notify_Serv_Export 00139 TAO_Notify_Proxy_T<POA_CosEventChannelAdmin::ProxyPushSupplier>; 00140 template class TAO_Notify_Serv_Export 00141 TAO_Notify_Proxy_T<POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer>; 00142 template class TAO_Notify_Serv_Export 00143 TAO_Notify_Proxy_T<POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer>; 00144 template class TAO_Notify_Serv_Export 00145 TAO_Notify_Proxy_T<POA_CosNotifyChannelAdmin::ProxyPushConsumer>; 00146 template class TAO_Notify_Serv_Export 00147 TAO_Notify_Proxy_T<POA_CosEventChannelAdmin::ProxyPushConsumer>; 00148 #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */ 00149 00150 TAO_END_VERSIONED_NAMESPACE_DECL 00151 00152 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) 00153 #include "orbsvcs/Notify/Proxy_T.cpp" 00154 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ 00155 00156 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) 00157 #pragma implementation ("Proxy_T.cpp") 00158 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ 00159 00160 #include /**/ "ace/post.h" 00161 #endif /* TAO_Notify_PROXY_T_H */