summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/Notify/Notify_ProxyConsumer_T.h131
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)