diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/EventChannel.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/EventChannel.h | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h index e334a2f03e5..5413a5b8e1b 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h +++ b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h @@ -21,16 +21,18 @@ #endif /* ACE_LACKS_PRAGMA_ONCE */ #include "orbsvcs/CosNotifyChannelAdminS.h" - +#include "Topology_Object.h" #include "Object.h" class TAO_Notify_ConsumerAdmin; class TAO_Notify_SupplierAdmin; class TAO_Notify_EventChannelFactory; +class TAO_Notify_ProxyConsumer; +class TAO_Notify_ProxySupplier; template <class TYPE> class TAO_Notify_Container_T; #if defined(_MSC_VER) -#if (_MSC_VER >= 1200) + #if (_MSC_VER >= 1200) #pragma warning(push) #endif /* _MSC_VER >= 1200 */ #pragma warning(disable:4250) @@ -42,9 +44,9 @@ template <class TYPE> class TAO_Notify_Container_T; * @brief Implementation of CosNotifyChannelAdmin::EventChannel * */ -class TAO_Notify_Serv_Export TAO_Notify_EventChannel - : public POA_CosNotifyChannelAdmin::EventChannel, - public virtual TAO_Notify_Object +class TAO_Notify_Serv_Export TAO_Notify_EventChannel + : public POA_CosNotifyChannelAdmin::EventChannel, + public TAO_Notify::Topology_Parent { friend class TAO_Notify_Builder; @@ -64,6 +66,10 @@ public: , const CosNotification::AdminProperties & initial_admin ACE_ENV_ARG_DECL); + /// Init (for reload) + void init (TAO_Notify::Topology_Parent * parent + ACE_ENV_ARG_DECL); + /// Remove ConsumerAdmin from its container. void remove (TAO_Notify_ConsumerAdmin* consumer_admin ACE_ENV_ARG_DECL); @@ -74,11 +80,30 @@ public: virtual void _add_ref (ACE_ENV_SINGLE_ARG_DECL); virtual void _remove_ref (ACE_ENV_SINGLE_ARG_DECL); + // TAO_Notify::Topology_Parent + + virtual void save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL); + virtual TAO_Notify::Topology_Object* load_child (const ACE_CString &type, + CORBA::Long id, + const TAO_Notify::NVPList& attrs + ACE_ENV_ARG_DECL); + virtual void reconnect (ACE_ENV_SINGLE_ARG_DECL); + + virtual TAO_Notify_Object::ID get_id () const {return id();} + + TAO_Notify_ProxyConsumer * find_proxy_consumer (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL); + TAO_Notify_ProxySupplier * find_proxy_supplier (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL); + /// Release virtual void release (void); /// Shutdown virtual int shutdown (ACE_ENV_SINGLE_ARG_DECL); + virtual void load_attrs(const TAO_Notify::NVPList& attrs); + + +protected: + virtual void save_attrs(TAO_Notify::NVPList& attrs); protected: typedef TAO_Notify_Container_T <TAO_Notify_ConsumerAdmin> TAO_Notify_ConsumerAdmin_Container; @@ -94,6 +119,8 @@ protected: /// SupplierAdmin Container. TAO_Notify_SupplierAdmin_Container *sa_container_; + TAO_SYNCH_MUTEX default_admin_mutex_; + // Default Consumer Admin CosNotifyChannelAdmin::ConsumerAdmin_var default_consumer_admin_; @@ -216,10 +243,6 @@ protected: #pragma warning(pop) #endif /* _MSC_VER */ -#if defined (__ACE_INLINE__) -#include "EventChannel.inl" -#endif /* __ACE_INLINE__ */ - #include /**/ "ace/post.h" #endif /* TAO_Notify_EVENTCHANNEL_H */ |