00001 // -*- C++ -*- 00002 00003 /** 00004 * @file Proxy_T.h 00005 * 00006 * $Id: Proxy_T.h 81422 2008-04-24 12:33:29Z johnnyw $ 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 /// Constructor 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 (void); 00052 virtual void _remove_ref (void); 00053 00054 virtual void validate_event_qos ( 00055 const CosNotification::QoSProperties & required_qos, 00056 CosNotification::NamedPropertyRangeSeq_out available_qos 00057 ); 00058 00059 virtual CosNotification::QoSProperties * get_qos ( 00060 ); 00061 00062 virtual void set_qos ( 00063 const CosNotification::QoSProperties & qos 00064 ); 00065 00066 virtual void validate_qos ( 00067 const CosNotification::QoSProperties & required_qos, 00068 CosNotification::NamedPropertyRangeSeq_out available_qos 00069 ); 00070 00071 virtual CosNotifyFilter::FilterID add_filter ( 00072 CosNotifyFilter::Filter_ptr new_filter 00073 ); 00074 00075 virtual void remove_filter ( 00076 CosNotifyFilter::FilterID filter 00077 ); 00078 00079 virtual CosNotifyFilter::Filter_ptr get_filter ( 00080 CosNotifyFilter::FilterID filter 00081 ); 00082 00083 virtual CosNotifyFilter::FilterIDSeq * get_all_filters ( 00084 ); 00085 00086 virtual void remove_all_filters ( 00087 ); 00088 }; 00089 00090 #if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT 00091 template class TAO_Notify_Serv_Export 00092 TAO_Notify_Proxy_T<POA_Event_Forwarder::StructuredProxyPushSupplier>; 00093 template class TAO_Notify_Serv_Export 00094 TAO_Notify_Proxy_T<POA_CosNotifyChannelAdmin::SequenceProxyPushSupplier>; 00095 template class TAO_Notify_Serv_Export 00096 TAO_Notify_Proxy_T<POA_Event_Forwarder::ProxyPushSupplier>; 00097 template class TAO_Notify_Serv_Export 00098 TAO_Notify_Proxy_T<POA_CosEventChannelAdmin::ProxyPushSupplier>; 00099 template class TAO_Notify_Serv_Export 00100 TAO_Notify_Proxy_T<POA_CosNotifyChannelAdmin::StructuredProxyPushConsumer>; 00101 template class TAO_Notify_Serv_Export 00102 TAO_Notify_Proxy_T<POA_CosNotifyChannelAdmin::SequenceProxyPushConsumer>; 00103 template class TAO_Notify_Serv_Export 00104 TAO_Notify_Proxy_T<POA_CosNotifyChannelAdmin::ProxyPushConsumer>; 00105 template class TAO_Notify_Serv_Export 00106 TAO_Notify_Proxy_T<POA_CosEventChannelAdmin::ProxyPushConsumer>; 00107 #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */ 00108 00109 TAO_END_VERSIONED_NAMESPACE_DECL 00110 00111 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) 00112 #include "orbsvcs/Notify/Proxy_T.cpp" 00113 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ 00114 00115 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) 00116 #pragma implementation ("Proxy_T.cpp") 00117 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ 00118 00119 #include /**/ "ace/post.h" 00120 #endif /* TAO_Notify_PROXY_T_H */