diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h | 131 |
1 files changed, 120 insertions, 11 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h index a05bf11ab58..a7ae182f2b6 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h @@ -18,8 +18,14 @@ #ifndef TAO_NOTIFY_PROXYCONSUMER_T_H #define TAO_NOTIFY_PROXYCONSUMER_T_H -#include "Notify_Proxy_T.h" +#include "Notify_QoSAdmin_i.h" +#include "Notify_FilterAdmin_i.h" +#include "Notify_Listeners.h" +#include "orbsvcs/CosNotifyChannelAdminS.h" + class TAO_Notify_SupplierAdmin_i; +class TAO_Notify_Resource_Manager; +class TAO_Notify_Event_Manager; #if defined(_MSC_VER) #if (_MSC_VER >= 1200) @@ -29,13 +35,15 @@ class TAO_Notify_SupplierAdmin_i; #endif /* _MSC_VER */ template <class SERVANT_TYPE> -class TAO_ORBSVCS_Export TAO_Notify_ProxyConsumer : public TAO_Notify_Proxy<SERVANT_TYPE> +class TAO_ORBSVCS_Export TAO_Notify_ProxyConsumer : public SERVANT_TYPE, public TAO_Notify_Update_Listener { // = TITLE // TAO_Notify_ProxyConsumer // // = DESCRIPTION - // The is a base class for all proxy consumers. + // The is a base class for all proxy consumers, templatized by the servant + // type. All the Filter Admin and QoS Admin interface methods are + // implemented here by delegating to the admin implementations. // public: @@ -49,14 +57,21 @@ public: void init (CORBA::Environment &ACE_TRY_ENV); // Init - virtual CosNotifyChannelAdmin::SupplierAdmin_ptr MyAdmin ( +virtual CosNotifyChannelAdmin::ProxyType MyType ( CORBA::Environment &ACE_TRY_ENV ) ACE_THROW_SPEC (( CORBA::SystemException )); - virtual CosNotification::EventTypeSeq * obtain_subscription_types ( +virtual CosNotifyChannelAdmin::SupplierAdmin_ptr MyAdmin ( + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + +virtual CosNotification::EventTypeSeq * obtain_subscription_types ( CosNotifyChannelAdmin::ObtainInfoMode mode, CORBA::Environment &ACE_TRY_ENV ) @@ -64,6 +79,82 @@ public: CORBA::SystemException )); +virtual void validate_event_qos ( + const CosNotification::QoSProperties & required_qos, + CosNotification::NamedPropertyRangeSeq_out available_qos, + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosNotification::UnsupportedQoS + )); + +virtual CosNotification::QoSProperties * get_qos ( + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + +virtual void set_qos ( + const CosNotification::QoSProperties & qos, + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosNotification::UnsupportedQoS + )); + +virtual void validate_qos ( + const CosNotification::QoSProperties & required_qos, + CosNotification::NamedPropertyRangeSeq_out available_qos, + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosNotification::UnsupportedQoS + )); + +virtual CosNotifyFilter::FilterID add_filter ( + CosNotifyFilter::Filter_ptr new_filter, + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + +virtual void remove_filter ( + CosNotifyFilter::FilterID filter, + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosNotifyFilter::FilterNotFound + )); + +virtual CosNotifyFilter::Filter_ptr get_filter ( + CosNotifyFilter::FilterID filter, + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosNotifyFilter::FilterNotFound + )); + +virtual CosNotifyFilter::FilterIDSeq * get_all_filters ( + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + +virtual void remove_all_filters ( + CORBA::Environment &ACE_TRY_ENV + ) + ACE_THROW_SPEC (( + CORBA::SystemException + )); + virtual void offer_change ( const CosNotification::EventTypeSeq & added, const CosNotification::EventTypeSeq & removed, @@ -79,15 +170,33 @@ virtual void offer_change ( virtual void cleanup_i (CORBA::Environment &ACE_TRY_ENV = TAO_default_environment ()); // Cleanup all resources used by this object. - CORBA::Boolean check_filters_i (const TAO_Notify_Event& event, CORBA::Environment& ACE_TRY_ENV); - // Check filters. +// = Data members + CosNotifyChannelAdmin::ProxyType mytype_; + // What type are we? - void on_connected (CORBA::Environment &ACE_TRY_ENV); - // Derived classes should call this when their suppliers connect. - - // = Data members TAO_Notify_SupplierAdmin_i* myadmin_; // My parent supplier admin. + + TAO_Notify_Event_Manager* event_manager_; + // Our event manager. + + TAO_Notify_Resource_Manager* resource_manager_; + // The resource factory. + + CORBA::Boolean is_connected_; + // True if we are connected to a supplier. + + CORBA::Boolean is_suspended_; + // True if we are connected to a supplier and suspended. + + CORBA::Boolean is_destroyed_; + // True if we are destroyed. + + TAO_Notify_QoSAdmin_i qos_admin_; + // Handle QoS admin methods. + + TAO_Notify_FilterAdmin_i filter_admin_; + // Handles the Filter admin methods. }; #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) |