diff options
author | wilson_d <wilson_d@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-10-27 17:04:34 +0000 |
---|---|---|
committer | wilson_d <wilson_d@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-10-27 17:04:34 +0000 |
commit | 6b91b5bcda830a14261024b894a483d28b290328 (patch) | |
tree | 640bd85c63409aa1de983fe08bbf402cf824612e /TAO/orbsvcs/orbsvcs/Notify | |
parent | 8a8f8354d2bdc6317c03b6db0495f5b9fec0a922 (diff) | |
download | ATCD-6b91b5bcda830a14261024b894a483d28b290328.tar.gz |
ChangeLogTag: Wed Oct 27 11:59:01 2004 Dale Wilson <wilson_d@ociweb.com>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify')
94 files changed, 1277 insertions, 649 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/Admin.cpp b/TAO/orbsvcs/orbsvcs/Notify/Admin.cpp index e1b7b1d301b..04d5b4151d3 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Admin.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Admin.cpp @@ -46,7 +46,7 @@ TAO_Notify_Admin::init (TAO_Notify_EventChannel *ec ACE_ENV_ARG_DECL) this->ec_->_incr_refcnt (); - this->TAO_NOTIFY::Topology_Object::init (ec); + this->TAO_Notify::Topology_Object::init (ec); ACE_NEW_THROW_EX (this->proxy_container_, TAO_Notify_Proxy_Container (), @@ -101,7 +101,7 @@ TAO_Notify_Admin::insert (TAO_Notify_Proxy* proxy ACE_ENV_ARG_DECL) } void -TAO_Notify_Admin::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL) +TAO_Notify_Admin::save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL) { bool changed = this->children_changed_; this->children_changed_ = false; @@ -109,7 +109,7 @@ TAO_Notify_Admin::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG if (is_persistent ()) { - TAO_NOTIFY::NVPList attrs; + TAO_Notify::NVPList attrs; this->save_attrs(attrs); const char* type = this->get_admin_type_name(); @@ -129,7 +129,7 @@ TAO_Notify_Admin::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG ACE_CHECK; } - TAO_NOTIFY::Save_Persist_Worker<TAO_Notify_Proxy> wrk(saver, want_all_children); + TAO_Notify::Save_Persist_Worker<TAO_Notify_Proxy> wrk(saver, want_all_children); this->proxy_container_->collection()->for_each(&wrk ACE_ENV_ARG_PARAMETER); ACE_CHECK; @@ -138,18 +138,18 @@ TAO_Notify_Admin::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG } void -TAO_Notify_Admin::save_attrs (TAO_NOTIFY::NVPList& attrs) +TAO_Notify_Admin::save_attrs (TAO_Notify::NVPList& attrs) { TAO_Notify_Object::save_attrs(attrs); - attrs.push_back(TAO_NOTIFY::NVP("InterFilterGroupOperator", this->filter_operator_)); + attrs.push_back(TAO_Notify::NVP("InterFilterGroupOperator", this->filter_operator_)); if (this->is_default_) { - attrs.push_back (TAO_NOTIFY::NVP ("default", "yes")); + attrs.push_back (TAO_Notify::NVP ("default", "yes")); } } void -TAO_Notify_Admin::load_attrs(const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_Admin::load_attrs(const TAO_Notify::NVPList& attrs) { TAO_Notify_Object::load_attrs (attrs); const char * value = 0; @@ -163,11 +163,11 @@ TAO_Notify_Admin::load_attrs(const TAO_NOTIFY::NVPList& attrs) } } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_Admin::load_child (const ACE_CString &type, - CORBA::Long id, const TAO_NOTIFY::NVPList& attrs ACE_ENV_ARG_DECL) + CORBA::Long id, const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { - TAO_NOTIFY::Topology_Object* result = this; + TAO_Notify::Topology_Object* result = this; if (type == "subscriptions") { if (DEBUG_LEVEL) ACE_DEBUG ((LM_DEBUG, @@ -193,7 +193,7 @@ TAO_Notify_Admin::load_child (const ACE_CString &type, void TAO_Notify_Admin::reconnect (ACE_ENV_SINGLE_ARG_DECL) { - TAO_NOTIFY::Reconnect_Worker<TAO_Notify_Proxy> wrk; + TAO_Notify::Reconnect_Worker<TAO_Notify_Proxy> wrk; this->proxy_container_->collection()->for_each(&wrk ACE_ENV_ARG_PARAMETER); ACE_CHECK; } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Admin.h b/TAO/orbsvcs/orbsvcs/Notify/Admin.h index 592c8481560..ea1029d8cc1 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Admin.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Admin.h @@ -35,7 +35,7 @@ template <class TYPE> class TAO_Notify_Container_T; * */ -class TAO_Notify_Serv_Export TAO_Notify_Admin : public TAO_NOTIFY::Topology_Parent +class TAO_Notify_Serv_Export TAO_Notify_Admin : public TAO_Notify::Topology_Parent { friend class TAO_Notify_Builder; public: @@ -72,20 +72,21 @@ public: void subscribed_types (TAO_Notify_EventTypeSeq& subscribed_types ACE_ENV_ARG_DECL); + TAO_Notify_EventChannel * event_channel () const; /// Shutdown virtual int shutdown (ACE_ENV_SINGLE_ARG_DECL); - 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 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); void set_default (bool is_default); bool is_default () const; - virtual void load_attrs(const TAO_NOTIFY::NVPList& attrs); + virtual void load_attrs(const TAO_Notify::NVPList& attrs); protected: - void save_attrs (TAO_NOTIFY::NVPList& attrs); + void save_attrs (TAO_Notify::NVPList& attrs); virtual const char * get_admin_type_name (void) const = 0; protected: diff --git a/TAO/orbsvcs/orbsvcs/Notify/Admin.inl b/TAO/orbsvcs/orbsvcs/Notify/Admin.inl index 155f2743b5b..f675842ad8c 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Admin.inl +++ b/TAO/orbsvcs/orbsvcs/Notify/Admin.inl @@ -1,5 +1,13 @@ // $Id$ +ACE_INLINE +TAO_Notify_EventChannel * +TAO_Notify_Admin::event_channel () const +{ + return this->ec_; +} + + ACE_INLINE TAO_Notify_FilterAdmin& TAO_Notify_Admin::filter_admin (void) { diff --git a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushConsumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushConsumer.cpp index c660897de91..0b93c980ee3 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushConsumer.cpp @@ -10,8 +10,7 @@ ACE_RCSID (Notify, TAO_Notify_ProxyPushConsumer, "$Id$") #include "tao/debug.h" #include "../AdminProperties.h" -#include "../Method_Request_Lookup.h" -#include "../Worker_Task.h" +#include "../Properties.h" #include "AnyEvent.h" #include "PushSupplier.h" @@ -60,10 +59,7 @@ TAO_Notify_ProxyPushConsumer::push (const CORBA::Any& any ACE_ENV_ARG_DECL) } TAO_Notify_AnyEvent_No_Copy event (any); - - TAO_Notify_Method_Request_Lookup_No_Copy request (&event, this); - - this->worker_task ()->execute (request ACE_ENV_ARG_PARAMETER); + this->push_i (&event ACE_ENV_ARG_PARAMETER); } void @@ -104,7 +100,7 @@ TAO_Notify_ProxyPushConsumer::get_proxy_type_name (void) const } void -TAO_Notify_ProxyPushConsumer::load_attrs (const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_ProxyPushConsumer::load_attrs (const TAO_Notify::NVPList& attrs) { SuperClass::load_attrs(attrs); ACE_CString ior; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushConsumer.h b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushConsumer.h index 4c6d1a60b94..ef66f3ec7b9 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushConsumer.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushConsumer.h @@ -53,10 +53,10 @@ public: /// Release virtual void release (void); -// virtual void save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL); +// virtual void save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL); virtual const char * get_proxy_type_name (void) const; - virtual void load_attrs (const TAO_NOTIFY::NVPList& attrs); + virtual void load_attrs (const TAO_Notify::NVPList& attrs); protected: ///= CosNotifyChannelAdmin::ProxyPushConsumer methods diff --git a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp index 0b8579fc93e..acb9df825dd 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp @@ -80,7 +80,7 @@ TAO_Notify_ProxyPushSupplier::get_proxy_type_name (void) const } void -TAO_Notify_ProxyPushSupplier::load_attrs (const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_ProxyPushSupplier::load_attrs (const TAO_Notify::NVPList& attrs) { SuperClass::load_attrs(attrs); ACE_CString ior; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.h b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.h index 9fd946fe17c..158292d9f86 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.h @@ -60,7 +60,7 @@ public: virtual const char * get_proxy_type_name (void) const; - virtual void load_attrs (const TAO_NOTIFY::NVPList& attrs); + virtual void load_attrs (const TAO_Notify::NVPList& attrs); // = Interface methods virtual CosNotifyChannelAdmin::ProxyType MyType (ACE_ENV_SINGLE_ARG_DECL) diff --git a/TAO/orbsvcs/orbsvcs/Notify/Bit_Vector.cpp b/TAO/orbsvcs/orbsvcs/Notify/Bit_Vector.cpp index 1c4ebf58906..65fc33cde83 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Bit_Vector.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Bit_Vector.cpp @@ -2,7 +2,7 @@ #include "Bit_Vector.h" -namespace TAO_NOTIFY +namespace TAO_Notify { Bit_Vector::Bit_Vector() diff --git a/TAO/orbsvcs/orbsvcs/Notify/Bit_Vector.h b/TAO/orbsvcs/orbsvcs/Notify/Bit_Vector.h index 9988f2738e5..b9f090dac6d 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Bit_Vector.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Bit_Vector.h @@ -26,7 +26,7 @@ #include "ace/Vector_T.h" #include "ace/Basic_Types.h" -namespace TAO_NOTIFY +namespace TAO_Notify { /// \brief Simple bit vector. diff --git a/TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp index 203bfa2c32b..f7b23e7d7b6 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Consumer.cpp @@ -90,12 +90,12 @@ TAO_Notify_Consumer::enqueue_request ( TAO_Notify_Method_Request_Event * request ACE_ENV_ARG_DECL) { - const TAO_Notify_Event * pevent = request->event ()->queueable_copy (ACE_ENV_SINGLE_ARG_PARAMETER); + TAO_Notify_Event_var event_var; + request->event ()->queueable_copy (event_var ACE_ENV_ARG_PARAMETER); ACE_CHECK; - TAO_Notify_Event_Copy_var event (pevent); TAO_Notify_Method_Request_Event_Queueable * queue_entry; ACE_NEW_THROW_EX (queue_entry, - TAO_Notify_Method_Request_Event_Queueable (*request, event), + TAO_Notify_Method_Request_Event_Queueable (*request, event_var), CORBA::NO_MEMORY ()); ACE_CHECK; @@ -120,12 +120,12 @@ TAO_Notify_Consumer::enqueue_if_necessary (TAO_Notify_Method_Request_Event * req ACE_static_cast (int, this->proxy ()->id ()), request->sequence () )); - const TAO_Notify_Event * pevent = request->event ()->queueable_copy (ACE_ENV_SINGLE_ARG_PARAMETER); + TAO_Notify_Event_var event_var; + request->event ()->queueable_copy (event_var ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (false); - TAO_Notify_Event_Copy_var event (pevent); TAO_Notify_Method_Request_Event_Queueable * queue_entry; ACE_NEW_THROW_EX (queue_entry, - TAO_Notify_Method_Request_Event_Queueable (*request, event), + TAO_Notify_Method_Request_Event_Queueable (*request, event_var), CORBA::NO_MEMORY ()); ACE_CHECK_RETURN (false); this->pending_events_->enqueue_tail (queue_entry); @@ -139,12 +139,12 @@ TAO_Notify_Consumer::enqueue_if_necessary (TAO_Notify_Method_Request_Event * req ACE_static_cast (int, this->proxy ()->id ()), request->sequence () )); - const TAO_Notify_Event * pevent = request->event ()->queueable_copy (ACE_ENV_SINGLE_ARG_PARAMETER); + TAO_Notify_Event_var event_var; + request->event ()->queueable_copy (event_var ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (false); - TAO_Notify_Event_Copy_var event (pevent); TAO_Notify_Method_Request_Event_Queueable * queue_entry; ACE_NEW_THROW_EX (queue_entry, - TAO_Notify_Method_Request_Event_Queueable (*request, event), + TAO_Notify_Method_Request_Event_Queueable (*request, event_var), CORBA::NO_MEMORY ()); ACE_CHECK_RETURN (false); this->pending_events_->enqueue_tail (queue_entry); diff --git a/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp b/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp index 9ff52de580b..09a89927501 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.cpp @@ -100,11 +100,11 @@ TAO_Notify_ConsumerAdmin::destroy (ACE_ENV_SINGLE_ARG_DECL) } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_ConsumerAdmin::load_child (const ACE_CString &type, - CORBA::Long id, const TAO_NOTIFY::NVPList& attrs ACE_ENV_ARG_DECL) + CORBA::Long id, const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { - TAO_NOTIFY::Topology_Object* result = this; + TAO_Notify::Topology_Object* result = this; if (type == "proxy_push_supplier") { if (DEBUG_LEVEL) ACE_DEBUG ((LM_DEBUG, @@ -151,11 +151,11 @@ TAO_Notify_ConsumerAdmin::load_child (const ACE_CString &type, return result; } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_ConsumerAdmin::load_proxy ( CORBA::Long id, CosNotifyChannelAdmin::ClientType ctype, - const TAO_NOTIFY::NVPList& attrs ACE_ENV_ARG_DECL) + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { TAO_Notify_Builder* bld = TAO_Notify_PROPERTIES::instance()->builder(); TAO_Notify_ProxySupplier * proxy = @@ -463,6 +463,24 @@ TAO_Notify_ConsumerAdmin::obtain_pull_supplier (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), CosEventChannelAdmin::ProxyPullSupplier::_nil ()); } +TAO_Notify_ProxySupplier * +TAO_Notify_ConsumerAdmin::find_proxy_supplier ( + TAO_Notify::IdVec & id_path, + size_t position + ACE_ENV_ARG_DECL) +{ + TAO_Notify_ProxySupplier * result = 0; + size_t path_size = id_path.size (); + if (position < path_size) + { + TAO_Notify_ProxySupplier_Find_Worker find_worker; + TAO_Notify_Proxy * proxy = find_worker.find (id_path[position], *this->proxy_container_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + result = dynamic_cast <TAO_Notify_ProxySupplier *> (proxy); + } + return result; +} + #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class TAO_Notify_Find_Worker_T<TAO_Notify_Proxy diff --git a/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.h b/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.h index 880129fd4e1..2f4632fba01 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.h +++ b/TAO/orbsvcs/orbsvcs/Notify/ConsumerAdmin.h @@ -23,6 +23,7 @@ #include "orbsvcs/NotifyExtS.h" #include "Admin.h" +class TAO_Notify_ProxySupplier; #if defined(_MSC_VER) #if (_MSC_VER >= 1200) @@ -59,17 +60,22 @@ public: virtual const char * get_admin_type_name () const; - virtual TAO_NOTIFY::Topology_Object* load_child ( + virtual TAO_Notify::Topology_Object* load_child ( const ACE_CString &type, CORBA::Long id, - const TAO_NOTIFY::NVPList& attrs + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL); + TAO_Notify_ProxySupplier * find_proxy_supplier ( + TAO_Notify::IdVec & id_path, + size_t position + ACE_ENV_ARG_DECL); + protected: - TAO_NOTIFY::Topology_Object *load_proxy ( + TAO_Notify::Topology_Object *load_proxy ( CORBA::Long id, CosNotifyChannelAdmin::ClientType ctype, - const TAO_NOTIFY::NVPList& attrs + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL); /// = NotifyExt::ConsumerAdmin methods diff --git a/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.cpp b/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.cpp index 63445e7af3c..3cd55e69237 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.cpp @@ -6,7 +6,6 @@ #include "Delivery_Request.inl" #endif /* __ACE_INLINE__ */ -#include "Routing_Slip.h" #include "tao/debug.h" //#define DEBUG_LEVEL 9 @@ -14,7 +13,7 @@ # define DEBUG_LEVEL TAO_debug_level #endif //DEBUG_LEVEL -namespace TAO_NOTIFY +namespace TAO_Notify { /////////////////// @@ -46,7 +45,7 @@ Delivery_Request::complete () // DO NOT INLINE THIS. It uses the Routing_Slip_Ptr which cannot be declared at // the time Delivery_Request.inl is compiled. -const TAO_Notify_Event_Copy_var & +const TAO_Notify_Event_var & Delivery_Request::event () const { return this->routing_slip_->event (); @@ -70,20 +69,20 @@ Delivery_Request::marshal (TAO_OutputCDR & cdr) } // namespace #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -//template class ACE_Auto_Basic_Ptr<TAO_NOTIFY::Routing_Slip>; -//template class ACE_Strong_Bound_Ptr<TAO_NOTIFY::Routing_Slip, TAO_SYNCH_MUTEX>; -//template class ACE_Auto_Basic_Ptr<TAO_NOTIFY::Delivery_Request>; -//template class ACE_Strong_Bound_Ptr<TAO_NOTIFY::Delivery_Request,TAO_SYNCH_MUTEX>; +//template class ACE_Auto_Basic_Ptr<TAO_Notify::Routing_Slip>; +//template class ACE_Strong_Bound_Ptr<TAO_Notify::Routing_Slip, TAO_SYNCH_MUTEX>; +//template class ACE_Auto_Basic_Ptr<TAO_Notify::Delivery_Request>; +//template class ACE_Strong_Bound_Ptr<TAO_Notify::Delivery_Request,TAO_SYNCH_MUTEX>; // Duplicated in Routing_Slip.cpp -//template class ACE_Vector <TAO_NOTIFY::Delivery_Request_Ptr>; -//template class ACE_Array_Base<ACE_Strong_Bound_Ptr<TAO_NOTIFY::Delivery_Request,TAO_SYNCH_MUTEX> >; +//template class ACE_Vector <TAO_Notify::Delivery_Request_Ptr>; +//template class ACE_Array_Base<ACE_Strong_Bound_Ptr<TAO_Notify::Delivery_Request,TAO_SYNCH_MUTEX> >; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -//#pragma instantiate ACE_Auto_Basic_Ptr<TAO_NOTIFY::Routing_Slip> -//#pragma instantiate ACE_Strong_Bound_Ptr<TAO_NOTIFY::Routing_Slip,TAO_SYNCH_MUTEX> -//#pragma instantiate ACE_Auto_Basic_Ptr<TAO_NOTIFY::Delivery_Request> -//#pragma instantiate ACE_Strong_Bound_Ptr<TAO_NOTIFY::Delivery_Request,TAO_SYNCH_MUTEX> +//#pragma instantiate ACE_Auto_Basic_Ptr<TAO_Notify::Routing_Slip> +//#pragma instantiate ACE_Strong_Bound_Ptr<TAO_Notify::Routing_Slip,TAO_SYNCH_MUTEX> +//#pragma instantiate ACE_Auto_Basic_Ptr<TAO_Notify::Delivery_Request> +//#pragma instantiate ACE_Strong_Bound_Ptr<TAO_Notify::Delivery_Request,TAO_SYNCH_MUTEX> // Duplicated in Routing_Slip.cpp -//#pragma instantiate ACE_Vector <TAO_NOTIFY::Delivery_Request_Ptr> -//#pragma instantiate ACE_Array_Base<ACE_Strong_Bound_Ptr<TAO_NOTIFY::Delivery_Request,TAO_SYNCH_MUTEX> > +//#pragma instantiate ACE_Vector <TAO_Notify::Delivery_Request_Ptr> +//#pragma instantiate ACE_Array_Base<ACE_Strong_Bound_Ptr<TAO_Notify::Delivery_Request,TAO_SYNCH_MUTEX> > #endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.h b/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.h index 29cd06868ed..6bdf5c08496 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.h @@ -18,10 +18,10 @@ // Forward declarations of referenced classes class TAO_Notify_EventChannelFactory; -namespace TAO_NOTIFY +namespace TAO_Notify { -// Forward declarations of TAO_NOTIFY classes/pointers/collections declared +// Forward declarations of TAO_Notify classes/pointers/collections declared // in this header class Delivery_Request; /// A reference-counted smart pointer to a Delivery_Request. @@ -29,7 +29,7 @@ typedef ACE_Strong_Bound_Ptr<Delivery_Request, TAO_SYNCH_MUTEX> Delivery_Request typedef ACE_Unbounded_Queue<Delivery_Request_Ptr> Delivery_Request_Queue; -// Forward declarations of TAO_NOTIFY classes/pointers/collections referenced +// Forward declarations of TAO_Notify classes/pointers/collections referenced // in this header class Routing_Slip; @@ -72,7 +72,7 @@ public: void complete (); /// \brief An accessor method for the event associated with the Routing Slip that owns this Delivery request. - const TAO_Notify_Event_Copy_var & event () const; + const TAO_Notify_Event_var & event () const; /// \brief An accessor method for the routing slip that owns this request. const Routing_Slip_Ptr & routing_slip ()const; @@ -92,6 +92,12 @@ public: /// Called during persistent event storage. void marshal (TAO_OutputCDR & cdr); + /// expose routing slip method + unsigned long sequence () const; + + /// expose routing slip method + bool should_retry () const; + // Meaningless, but needed by ACE_Vector on some platforms (gcc2.x LynxOS) bool operator == (const Delivery_Request & rhs) const; // Meaningless, but needed by ACE_Vector on some platforms diff --git a/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.inl b/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.inl index 7f6dde042be..c8b279b908d 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.inl +++ b/TAO/orbsvcs/orbsvcs/Notify/Delivery_Request.inl @@ -1,7 +1,8 @@ /* -*- C++ -*- */ // $Id$ +#include "Routing_Slip.h" -namespace TAO_NOTIFY +namespace TAO_Notify { ACE_INLINE @@ -25,6 +26,21 @@ Delivery_Request::set_destination_id (IdVec & destination_id) this->destination_id_ = destination_id; } -} // namespace TAO_NOTIFY +ACE_INLINE +unsigned long +Delivery_Request::sequence () const +{ + return this->routing_slip_->sequence (); +} + +ACE_INLINE +bool +Delivery_Request::should_retry () const +{ + return this->routing_slip_->should_retry (); +} + + +} // namespace TAO_Notify diff --git a/TAO/orbsvcs/orbsvcs/Notify/Event.h b/TAO/orbsvcs/orbsvcs/Notify/Event.h index 8e0a2b03f26..3bc2296490f 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Event.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Event.h @@ -35,6 +35,42 @@ class TAO_Notify_Consumer; class TAO_Notify_EventType; +class TAO_Notify_Event; + +typedef TAO_Notify_Refcountable_Guard_T<TAO_Notify_Event> TAO_Notify_Event_var_Base; + +/** + * @class TAO_Notify_Event_var + * + * @brief A Non-Copy version of the smart pointer that hides the constructors. + * + */ +class TAO_Notify_Event_var : public TAO_Notify_Event_var_Base +{ +public: + /// Default Constructor + TAO_Notify_Event_var (void); + +protected: + /// Constructor + TAO_Notify_Event_var (const TAO_Notify_Event* event); +}; + +/** + * @class TAO_Notify_Event + * + * @brief A smart pointer that allows construction from a TAO_Notify_Event + * + */ +class TAO_Notify_Event_Copy_var : public TAO_Notify_Event_var +{ +public: + /// Default Constructor + TAO_Notify_Event_Copy_var (void); + + /// Constructor + TAO_Notify_Event_Copy_var (const TAO_Notify_Event* event); +}; /** * @class TAO_Notify_Event @@ -88,7 +124,7 @@ public: virtual void push_no_filtering (Event_Forwarder::ProxyPushSupplier_ptr forwarder ACE_ENV_ARG_DECL) const = 0; /// Return a pointer to a copy of this event on the heap - const TAO_Notify_Event * queueable_copy (ACE_ENV_SINGLE_ARG_DECL) const; + void queueable_copy (TAO_Notify_Event_var & ptr ACE_ENV_ARG_DECL) const; /// marshal this event into a CDR buffer (for persistence) virtual void marshal (TAO_OutputCDR & cdr) const = 0; @@ -125,41 +161,6 @@ protected: TAO_Notify_Event * event_on_heap_; }; -typedef TAO_Notify_Refcountable_Guard_T<TAO_Notify_Event> TAO_Notify_Event_var_Base; - -/** - * @class TAO_Notify_Event_var - * - * @brief A Non-Copy version of the smart pointer that hides the constructors. - * - */ -class TAO_Notify_Event_var : public TAO_Notify_Event_var_Base -{ -public: - /// Default Constructor - TAO_Notify_Event_var (void); - -protected: - /// Constructor - TAO_Notify_Event_var (const TAO_Notify_Event* event); -}; - -/** - * @class TAO_Notify_Event - * - * @brief A smart pointer that allows construction from a TAO_Notify_Event - * - */ -class TAO_Notify_Event_Copy_var : public TAO_Notify_Event_var -{ -public: - /// Default Constructor - TAO_Notify_Event_Copy_var (void); - - /// Constructor - TAO_Notify_Event_Copy_var (const TAO_Notify_Event* event); -}; - #if defined (__ACE_INLINE__) #include "Event.inl" #endif /* __ACE_INLINE__ */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Event.inl b/TAO/orbsvcs/orbsvcs/Notify/Event.inl index 474644700c5..b51106e8276 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Event.inl +++ b/TAO/orbsvcs/orbsvcs/Notify/Event.inl @@ -47,17 +47,17 @@ TAO_Notify_Event_Copy_var::TAO_Notify_Event_Copy_var (const TAO_Notify_Event* ev } ACE_INLINE -const TAO_Notify_Event * -TAO_Notify_Event::queueable_copy (ACE_ENV_SINGLE_ARG_DECL) const +void //const TAO_Notify_Event * +TAO_Notify_Event::queueable_copy (TAO_Notify_Event_var & ptr ACE_ENV_ARG_DECL) const { if (this->event_on_heap_ == 0) { TAO_Notify_Event * copied = this->copy (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK_RETURN (0); + ACE_CHECK; const_cast <TAO_Notify_Event *> (this)->event_on_heap_ = copied; copied->event_on_heap_ = copied; } - return this->event_on_heap_; + ptr = TAO_Notify_Event_Copy_var (this->event_on_heap_); } diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp index c9a7d28c6a4..2c7103de567 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.cpp @@ -63,7 +63,7 @@ TAO_Notify_EventChannel::init (TAO_Notify_EventChannelFactory* ecf , const CosNotification::AdminProperties & initial_admin ACE_ENV_ARG_DECL) { - this->TAO_NOTIFY::Topology_Object::init (ecf); + this->TAO_Notify::Topology_Object::init (ecf); this->ecf_ = ecf; @@ -129,7 +129,7 @@ void TAO_Notify_EventChannel::init (TAO_Notify_EventChannelFactory* ecf ACE_ENV_ARG_DECL) { - this->TAO_NOTIFY::Topology_Object::init (ecf); + this->TAO_Notify::Topology_Object::init (ecf); this->ecf_ = ecf; @@ -483,7 +483,7 @@ TAO_Notify_EventChannel::validate_qos (const CosNotification::QoSProperties & /* } void -TAO_Notify_EventChannel::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL) +TAO_Notify_EventChannel::save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL) { bool changed = this->self_changed_; this->self_changed_ = false; @@ -491,20 +491,20 @@ TAO_Notify_EventChannel::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ if (is_persistent ()) { - TAO_NOTIFY::NVPList attrs; + TAO_Notify::NVPList attrs; this->save_attrs(attrs); bool want_all_children = saver.begin_object( this->id(), "channel", attrs, changed ACE_ENV_ARG_PARAMETER); ACE_CHECK; - TAO_NOTIFY::Save_Persist_Worker<TAO_Notify_ConsumerAdmin> ca_wrk(saver, want_all_children); + TAO_Notify::Save_Persist_Worker<TAO_Notify_ConsumerAdmin> ca_wrk(saver, want_all_children); ACE_ASSERT(this->ca_container_ != 0); this->ca_container_->collection()->for_each(&ca_wrk ACE_ENV_ARG_PARAMETER); ACE_CHECK; - TAO_NOTIFY::Save_Persist_Worker<TAO_Notify_SupplierAdmin> sa_wrk(saver, want_all_children); + TAO_Notify::Save_Persist_Worker<TAO_Notify_SupplierAdmin> sa_wrk(saver, want_all_children); ACE_ASSERT(this->sa_container_ != 0); this->sa_container_->collection()->for_each(&sa_wrk ACE_ENV_ARG_PARAMETER); ACE_CHECK; @@ -515,27 +515,27 @@ TAO_Notify_EventChannel::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ namespace { template<class T> - void add_attr(TAO_NOTIFY::NVPList& attrs, const T& prop) { + void add_attr(TAO_Notify::NVPList& attrs, const T& prop) { if (prop.is_valid()) { - attrs.push_back(TAO_NOTIFY::NVP (prop)); + attrs.push_back(TAO_Notify::NVP (prop)); } } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template void add_attr<TAO_NS_Property_Boolean>(TAO_NOTIFY::NVPList&, - const TAO_NS_Property_Boolean&); -template void add_attr<TAO_NS_Property_T<int> >(TAO_NOTIFY::NVPList&, - const TAO_NS_Property_T<int>&); +template void add_attr<TAO_Notify_Property_Boolean>(TAO_Notify::NVPList&, + const TAO_Notify_Property_Boolean&); +template void add_attr<TAO_Notify_Property_T<int> >(TAO_Notify::NVPList&, + const TAO_Notify_Property_T<int>&); #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate void add_attr<TAO_NS_Property_Boolean>(\ - TAO_NOTIFY::NVPList&, const TAO_NS_Property_Boolean&) -#pragma instantiate void add_attr<TAO_NS_Property_T<int> >(\ - TAO_NOTIFY::NVPList&, const TAO_NS_Property_T<int>&) +#pragma instantiate void add_attr<TAO_Notify_Property_Boolean>(\ + TAO_Notify::NVPList&, const TAO_Notify_Property_Boolean&) +#pragma instantiate void add_attr<TAO_Notify_Property_T<int> >(\ + TAO_Notify::NVPList&, const TAO_Notify_Property_T<int>&) #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ } void -TAO_Notify_EventChannel::save_attrs(TAO_NOTIFY::NVPList& attrs) +TAO_Notify_EventChannel::save_attrs(TAO_Notify::NVPList& attrs) { TAO_Notify_Object::save_attrs(attrs); add_attr(attrs, this->admin_properties_->max_global_queue_length()); @@ -545,7 +545,7 @@ TAO_Notify_EventChannel::save_attrs(TAO_NOTIFY::NVPList& attrs) } void -TAO_Notify_EventChannel::load_attrs(const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_EventChannel::load_attrs(const TAO_Notify::NVPList& attrs) { TAO_Notify_Object::load_attrs(attrs); attrs.load(this->admin_properties_->max_global_queue_length()); @@ -555,13 +555,13 @@ TAO_Notify_EventChannel::load_attrs(const TAO_NOTIFY::NVPList& attrs) this->admin_properties_->init(); } -TAO_NOTIFY::Topology_Object * +TAO_Notify::Topology_Object * TAO_Notify_EventChannel::load_child (const ACE_CString &type, CORBA::Long id, - const TAO_NOTIFY::NVPList& attrs + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { - TAO_NOTIFY::Topology_Object* result = this; + TAO_Notify::Topology_Object* result = this; if (type == "consumer_admin") { if (DEBUG_LEVEL) ACE_DEBUG ((LM_DEBUG, @@ -615,16 +615,58 @@ TAO_Notify_EventChannel::load_child (const ACE_CString &type, } return result; } +TAO_Notify_ProxyConsumer * +TAO_Notify_EventChannel::find_proxy_consumer (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL) +{ + TAO_Notify_ProxyConsumer * result = 0; + size_t path_size = id_path.size (); + if (position < path_size) + { + TAO_Notify_SupplierAdmin_Find_Worker find_worker; + TAO_Notify_SupplierAdmin * admin = find_worker.find (id_path[position], *this->sa_container_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + ++position; + if (admin != 0) + { + result = admin->find_proxy_consumer (id_path, position + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + } + } + return result; +} + +TAO_Notify_ProxySupplier * +TAO_Notify_EventChannel::find_proxy_supplier (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL) +{ + TAO_Notify_ProxySupplier * result = 0; + size_t path_size = id_path.size (); + if (position < path_size) + { + TAO_Notify_ConsumerAdmin_Find_Worker find_worker; + TAO_Notify_ConsumerAdmin * admin = find_worker.find (id_path[position], *this->ca_container_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + ++position; + if (admin != 0) + { + result = admin->find_proxy_supplier (id_path, position + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + } + } + return result; +} + void TAO_Notify_EventChannel::reconnect (ACE_ENV_SINGLE_ARG_DECL) { - TAO_NOTIFY::Reconnect_Worker<TAO_Notify_ConsumerAdmin> ca_wrk; + TAO_Notify::Reconnect_Worker<TAO_Notify_ConsumerAdmin> ca_wrk; ACE_ASSERT(this->ca_container_ != 0); this->ca_container_->collection()->for_each(&ca_wrk ACE_ENV_ARG_PARAMETER); ACE_CHECK; - TAO_NOTIFY::Reconnect_Worker<TAO_Notify_SupplierAdmin> sa_wrk; + TAO_Notify::Reconnect_Worker<TAO_Notify_SupplierAdmin> sa_wrk; ACE_ASSERT(this->sa_container_ != 0); this->sa_container_->collection()->for_each(&sa_wrk ACE_ENV_ARG_PARAMETER); ACE_CHECK; @@ -652,8 +694,8 @@ template class TAO_ESF_Shutdown_Proxy<TAO_Notify_SupplierAdmin>; template class Save_Persist_Worker<TAO_Notify_ConsumerAdmin>; template class Save_Persist_Worker<TAO_Notify_SupplierAdmin>; -template class TAO_NOTIFY::Reconnect_Worker<TAO_Notify_ConsumerAdmin>; -template class TAO_NOTIFY::Reconnect_Worker<TAO_Notify_SupplierAdmin>; +template class TAO_Notify::Reconnect_Worker<TAO_Notify_ConsumerAdmin>; +template class TAO_Notify::Reconnect_Worker<TAO_Notify_SupplierAdmin>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) @@ -677,7 +719,7 @@ template class TAO_NOTIFY::Reconnect_Worker<TAO_Notify_SupplierAdmin>; #pragma instantiate Save_Persist_Worker<TAO_Notify_ConsumerAdmin> #pragma instantiate Save_Persist_Worker<TAO_Notify_SupplierAdmin> -#pragma instantiate TAO_NOTIFY::Reconnect_Worker<TAO_Notify_ConsumerAdmin> -#pragma instantiate TAO_NOTIFY::Reconnect_Worker<TAO_Notify_SupplierAdmin> +#pragma instantiate TAO_Notify::Reconnect_Worker<TAO_Notify_ConsumerAdmin> +#pragma instantiate TAO_Notify::Reconnect_Worker<TAO_Notify_SupplierAdmin> #endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h index 69652d43329..c52843ac570 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h +++ b/TAO/orbsvcs/orbsvcs/Notify/EventChannel.h @@ -46,7 +46,7 @@ template <class TYPE> class TAO_Notify_Container_T; */ class TAO_Notify_Serv_Export TAO_Notify_EventChannel : public POA_CosNotifyChannelAdmin::EventChannel, - public TAO_NOTIFY::Topology_Parent + public TAO_Notify::Topology_Parent { friend class TAO_Notify_Builder; @@ -80,29 +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 + // 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, + 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 + 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); + 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); + virtual void load_attrs(const TAO_Notify::NVPList& attrs); + protected: - virtual void save_attrs(TAO_NOTIFY::NVPList& attrs); + virtual void save_attrs(TAO_Notify::NVPList& attrs); protected: typedef TAO_Notify_Container_T <TAO_Notify_ConsumerAdmin> TAO_Notify_ConsumerAdmin_Container; diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventChannelFactory.cpp b/TAO/orbsvcs/orbsvcs/Notify/EventChannelFactory.cpp index 7cf169874fb..ad1b3a8661f 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventChannelFactory.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/EventChannelFactory.cpp @@ -25,7 +25,7 @@ ACE_RCSID(Notify, TAO_Notify_EventChannelFactory, "$Id$") #include "Seq_Worker_T.h" #include "tao/debug.h" -//#define DEBUG_LEVEL 10 +//#define DEBUG_LEVEL 9 #ifndef DEBUG_LEVEL # define DEBUG_LEVEL TAO_debug_level #endif //DEBUG_LEVEL @@ -117,7 +117,7 @@ TAO_Notify_EventChannelFactory::init (PortableServer::POA_ptr poa ACE_ENV_ARG_DE // Note topology factory is configured separately from the "builder" mediated // objects since it is independant of the "style" of Notification Service. this->topology_factory_ = - ACE_Dynamic_Service <TAO_NOTIFY::Topology_Factory>::instance ("Topology_Factory"); + ACE_Dynamic_Service <TAO_Notify::Topology_Factory>::instance ("Topology_Factory"); this->load_topology (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; @@ -218,7 +218,7 @@ TAO_Notify_EventChannelFactory::get_event_channel (CosNotifyChannelAdmin::Channe } void -TAO_Notify_EventChannelFactory::set_topology_factory(TAO_NOTIFY::Topology_Factory* f) +TAO_Notify_EventChannelFactory::set_topology_factory(TAO_Notify::Topology_Factory* f) { ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P,%t) Debug Topology_Factory installed in EventChannelFactory.\n") @@ -235,7 +235,7 @@ TAO_Notify_EventChannelFactory::load_topology (ACE_ENV_SINGLE_ARG_DECL) this->loading_topology_ = true; if (this->topology_factory_ != 0) { - auto_ptr<TAO_NOTIFY::Topology_Loader> tl(this->topology_factory_->create_loader()); + auto_ptr<TAO_Notify::Topology_Loader> tl(this->topology_factory_->create_loader()); if (tl.get () != 0) { tl->load (this ACE_ENV_ARG_PARAMETER); @@ -256,13 +256,13 @@ TAO_Notify_EventChannelFactory::is_persistent () const } void -TAO_Notify_EventChannelFactory::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL) +TAO_Notify_EventChannelFactory::save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL) { bool changed = this->self_changed_; this->self_changed_ = false; this->children_changed_ = false; - TAO_NOTIFY::NVPList attrs; // ECF has no attributes + TAO_Notify::NVPList attrs; // ECF has no attributes bool want_all_children = saver.begin_object(0, "channel_factory", attrs, changed ACE_ENV_ARG_PARAMETER); @@ -271,7 +271,7 @@ TAO_Notify_EventChannelFactory::save_persistent (TAO_NOTIFY::Topology_Saver& sav // for each deleted child // delete_child // if the child has persistence. - TAO_NOTIFY::Save_Persist_Worker<TAO_Notify_EventChannel> wrk(saver, want_all_children); + TAO_Notify::Save_Persist_Worker<TAO_Notify_EventChannel> wrk(saver, want_all_children); ACE_ASSERT(this->ec_container_ != 0); this->ec_container_->collection()->for_each(&wrk ACE_ENV_ARG_PARAMETER); @@ -288,22 +288,23 @@ TAO_Notify_EventChannelFactory::save_persistent (TAO_NOTIFY::Topology_Saver& sav void TAO_Notify_EventChannelFactory::load_event_persistence (ACE_ENV_SINGLE_ARG_DECL) { +#define EVENT_PERISISTENCE_SUPPORT //@@todo #ifdef EVENT_PERISISTENCE_SUPPORT //@@todo - TAO_NOTIFY::Event_Persistence_Strategy * strategy = - ACE_Dynamic_Service <TAO_NOTIFY::Event_Persistence_Strategy>::instance ("Event_Persistence"); + TAO_Notify::Event_Persistence_Strategy * strategy = + ACE_Dynamic_Service <TAO_Notify::Event_Persistence_Strategy>::instance ("Event_Persistence"); if (strategy != 0) { if (this->topology_factory_ != 0) { - Event_Persistence_Factory * factory = strategy->get_factory (); + TAO_Notify::Event_Persistence_Factory * factory = strategy->get_factory (); if (factory != 0) { for ( - Routing_Slip_Persistence_Manager * rspm = factory->first_reload_manager(); + TAO_Notify::Routing_Slip_Persistence_Manager * rspm = factory->first_reload_manager(); rspm != 0; rspm = rspm->load_next ()) { - TAO_NOTIFY::Routing_Slip_Ptr routing_slip = Routing_Slip::create (*this, rspm); + TAO_Notify::Routing_Slip_Ptr routing_slip = TAO_Notify::Routing_Slip::create (*this, rspm); if (!routing_slip.null ()) { this->routing_slip_restart_set_.insert (routing_slip); @@ -352,7 +353,7 @@ TAO_Notify_EventChannelFactory::change_to_parent (ACE_ENV_SINGLE_ARG_DECL) ACE_CHECK_RETURN(false); if (seq == this->topology_save_seq_) { - auto_ptr<TAO_NOTIFY::Topology_Saver> saver(this->topology_factory_->create_saver()); + auto_ptr<TAO_Notify::Topology_Saver> saver(this->topology_factory_->create_saver()); if (saver.get() != 0) { this->save_persistent(*saver ACE_ENV_ARG_PARAMETER); @@ -366,15 +367,15 @@ TAO_Notify_EventChannelFactory::change_to_parent (ACE_ENV_SINGLE_ARG_DECL) return saving; } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_EventChannelFactory::load_child (const ACE_CString& type, CORBA::Long id, - const TAO_NOTIFY:: + const TAO_Notify:: NVPList& attrs ACE_ENV_ARG_DECL) { // ignore anything but our valid children (ie channel) - TAO_NOTIFY::Topology_Object * result = this; + TAO_Notify::Topology_Object * result = this; if (type == "channel") { if (DEBUG_LEVEL) ACE_DEBUG ((LM_DEBUG, @@ -393,7 +394,7 @@ TAO_Notify_EventChannelFactory::load_child (const ACE_CString& type, result = ec; } - else if (type == TAO_NOTIFY::REGISTRY_TYPE) + else if (type == TAO_Notify::REGISTRY_TYPE) { result = & this->reconnect_registry_; } @@ -404,7 +405,7 @@ void TAO_Notify_EventChannelFactory::reconnect (ACE_ENV_SINGLE_ARG_DECL) { // Reconnect all children first - TAO_NOTIFY::Reconnect_Worker<TAO_Notify_EventChannel> wrk; + TAO_Notify::Reconnect_Worker<TAO_Notify_EventChannel> wrk; this->ec_container_->collection()->for_each(&wrk ACE_ENV_ARG_PARAMETER); ACE_CHECK; @@ -419,19 +420,15 @@ TAO_Notify_EventChannelFactory::reconnect (ACE_ENV_SINGLE_ARG_DECL) this->reconnect_registry_.send_reconnect (this_reference.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK; -#ifdef TODO_EVENT_PERSISTENCE // // reactivate events in-progress Routing_Slip_Set::CONST_ITERATOR iter (this->routing_slip_restart_set_); - Routing_Slip_Ptr * routing_slip; + TAO_Notify::Routing_Slip_Ptr * routing_slip; for (iter.first(); iter.next(routing_slip); iter.advance()) { (*routing_slip)->reconnect(ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; } this->routing_slip_restart_set_.reset (); -#else - int TODO_Event_Persistence; -#endif } NotifyExt::ReconnectionRegistry::ReconnectionID @@ -471,6 +468,63 @@ TAO_Notify_EventChannelFactory::save_topology (ACE_ENV_SINGLE_ARG_DECL) ACE_CHECK; } +TAO_Notify_ProxyConsumer * +TAO_Notify_EventChannelFactory::find_proxy_consumer (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL) +{ + TAO_Notify_ProxyConsumer * result = 0; + size_t path_size = id_path.size (); + + // EventChannelFactory only: The first id is proably for the ECF itself + // if so, silently consume it. + if (position < path_size && id_path[position] == this->id_) + { + ++position; + } + if (position < path_size) + { + TAO_Notify_EventChannel_Find_Worker find_worker; + + TAO_Notify_EventChannel * ec = find_worker.find (id_path[position], *this->ec_container_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + ++position; + if (ec != 0) + { + result = ec->find_proxy_consumer (id_path, position + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + } + } + return result; +} + +TAO_Notify_ProxySupplier * +TAO_Notify_EventChannelFactory::find_proxy_supplier (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL) +{ + TAO_Notify_ProxySupplier * result = 0; + size_t path_size = id_path.size (); + + // EventChannelFactory only: The first id is proably for the ECF itself + // if so, silently consume it. + if (position < path_size && id_path[position] == this->id_) + { + ++position; + } + if (position < path_size) + { + TAO_Notify_EventChannel_Find_Worker find_worker; + TAO_Notify_EventChannel * ec = find_worker.find (id_path[position], *this->ec_container_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + ++position; + if (ec != 0) + { + result = ec->find_proxy_supplier (id_path, position + ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + } + } + return result; +} + #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class TAO_Notify_Find_Worker_T<TAO_Notify_EventChannel diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventChannelFactory.h b/TAO/orbsvcs/orbsvcs/Notify/EventChannelFactory.h index df2578bd4ea..c2eecb3c863 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventChannelFactory.h +++ b/TAO/orbsvcs/orbsvcs/Notify/EventChannelFactory.h @@ -25,7 +25,7 @@ #include "Topology_Object.h" #include "Topology_Factory.h" #include "Reconnection_Registry.h" -//@@todo #include "Routing_Slip.h" +#include "Routing_Slip.h" class TAO_Notify_EventChannel; template <class TYPE> class TAO_Notify_Container_T; @@ -45,11 +45,11 @@ template <class TYPE> class TAO_Notify_Container_T; */ class TAO_Notify_Serv_Export TAO_Notify_EventChannelFactory : public virtual POA_NotifyExt::EventChannelFactory - , public TAO_NOTIFY::Topology_Parent + , public TAO_Notify::Topology_Parent { friend class TAO_Notify_Builder; -//@@todo typedef ACE_Unbounded_Set <TAO_NOTIFY::Routing_Slip_Ptr> Routing_Slip_Set; + typedef ACE_Unbounded_Set <TAO_Notify::Routing_Slip_Ptr> Routing_Slip_Set; public: /// Constuctor @@ -88,17 +88,17 @@ public: /// Use the passed in saver factory to generate topology saver objects. /// Does not take ownership. - void set_topology_factory(TAO_NOTIFY::Topology_Factory* sf); + void set_topology_factory(TAO_Notify::Topology_Factory* sf); //-- Topology_Parent virtual bool is_persistent () const; - virtual void save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL); + virtual void save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL); virtual bool change_to_parent (ACE_ENV_SINGLE_ARG_DECL); - virtual TAO_NOTIFY::Topology_Object* load_child (const ACE_CString &type, + virtual TAO_Notify::Topology_Object* load_child (const ACE_CString &type, CORBA::Long id, - const TAO_NOTIFY::NVPList& attrs + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL); virtual void reconnect (ACE_ENV_SINGLE_ARG_DECL); @@ -110,6 +110,12 @@ public: virtual void save_topology (ACE_ENV_SINGLE_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException)); + 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); + TAO_Notify_Object * follow_id_path (TAO_Notify::IdVec & id_path, size_t position ACE_ENV_ARG_DECL); + virtual TAO_Notify_Object::ID get_id () const {return id();} // @@todo move to INL + + protected: typedef TAO_Notify_Container_T<TAO_Notify_EventChannel> TAO_Notify_EventChannel_Container; @@ -172,11 +178,11 @@ private: TAO_SYNCH_MUTEX topology_save_lock_; /// change-in-progress detector to avoid duplicates short topology_save_seq_; - TAO_NOTIFY::Topology_Factory* topology_factory_; - TAO_NOTIFY::Reconnection_Registry reconnect_registry_; + TAO_Notify::Topology_Factory* topology_factory_; + TAO_Notify::Reconnection_Registry reconnect_registry_; bool loading_topology_; -//@@todo Routing_Slip_Set routing_slip_restart_set_; + Routing_Slip_Set routing_slip_restart_set_; }; diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventType.cpp b/TAO/orbsvcs/orbsvcs/Notify/EventType.cpp index 3f51adfdaf8..1b2e0a3a1ef 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventType.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/EventType.cpp @@ -143,7 +143,7 @@ TAO_Notify_EventType::dump (void) const } /// Initialize from an NVPList, return false on failure -bool TAO_Notify_EventType::init(const TAO_NOTIFY::NVPList& attrs) +bool TAO_Notify_EventType::init(const TAO_Notify::NVPList& attrs) { bool result = false; @@ -158,16 +158,16 @@ bool TAO_Notify_EventType::init(const TAO_NOTIFY::NVPList& attrs) } - // TAO_NOTIFY::Topology_Object + // TAO_Notify::Topology_Object void -TAO_Notify_EventType::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL) +TAO_Notify_EventType::save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL) { - TAO_NOTIFY::NVPList attrs; + TAO_Notify::NVPList attrs; bool changed = true; - attrs.push_back(TAO_NOTIFY::NVP("Domain", this->event_type_.domain_name.in())); - attrs.push_back(TAO_NOTIFY::NVP("Type", this->event_type_.type_name.in())); + attrs.push_back(TAO_Notify::NVP("Domain", this->event_type_.domain_name.in())); + attrs.push_back(TAO_Notify::NVP("Type", this->event_type_.type_name.in())); saver.begin_object(0, "subscription", attrs, changed ACE_ENV_ARG_PARAMETER); ACE_CHECK; diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventType.h b/TAO/orbsvcs/orbsvcs/Notify/EventType.h index 7b76d7c78b0..408864f7ed0 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventType.h +++ b/TAO/orbsvcs/orbsvcs/Notify/EventType.h @@ -32,7 +32,7 @@ * It is used by the Event Manager as a key to find subscription lists. * */ -class TAO_Notify_Serv_Export TAO_Notify_EventType : public TAO_NOTIFY::Topology_Savable +class TAO_Notify_Serv_Export TAO_Notify_EventType : public TAO_Notify::Topology_Savable { public: /// Constuctor @@ -72,11 +72,11 @@ public: void dump (void) const; /// Initialize from an NVPList, return false on failure - bool init(const TAO_NOTIFY::NVPList& attrs); + bool init(const TAO_Notify::NVPList& attrs); - // TAO_NOTIFY::Topology_Object + // TAO_Notify::Topology_Object - virtual void save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL); + virtual void save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL); protected: /// Init this object. diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventTypeSeq.cpp b/TAO/orbsvcs/orbsvcs/Notify/EventTypeSeq.cpp index 8fee7cdf4be..610da6f3e79 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventTypeSeq.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/EventTypeSeq.cpp @@ -247,14 +247,14 @@ TAO_Notify_EventTypeSeq::dump (void) const } } - // TAO_NOTIFY::Topology_Object + // TAO_Notify::Topology_Object void -TAO_Notify_EventTypeSeq::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL) +TAO_Notify_EventTypeSeq::save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL) { bool changed = this->self_changed_; this->self_changed_ = false; this->children_changed_ = false; - TAO_NOTIFY::NVPList attrs; + TAO_Notify::NVPList attrs; TAO_Notify_EventTypeSeq::ITERATOR iter (*this); TAO_Notify_EventType* event_type; @@ -278,11 +278,11 @@ TAO_Notify_EventTypeSeq::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ } } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_EventTypeSeq::load_child (const ACE_CString &type, CORBA::Long id, - const TAO_NOTIFY::NVPList& attrs ACE_ENV_ARG_DECL) + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { - TAO_NOTIFY::Topology_Object *result = this; + TAO_Notify::Topology_Object *result = this; TAO_Notify_EventType et; if ((type == "subscription") && et.init(attrs)) diff --git a/TAO/orbsvcs/orbsvcs/Notify/EventTypeSeq.h b/TAO/orbsvcs/orbsvcs/Notify/EventTypeSeq.h index 09e0b0ca3c9..16c89ec3813 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/EventTypeSeq.h +++ b/TAO/orbsvcs/orbsvcs/Notify/EventTypeSeq.h @@ -30,7 +30,7 @@ */ class TAO_Notify_Serv_Export TAO_Notify_EventTypeSeq : public ACE_Unbounded_Set <TAO_Notify_EventType> - , public TAO_NOTIFY::Topology_Object + , public TAO_Notify::Topology_Object { typedef ACE_Unbounded_Set <TAO_Notify_EventType> inherited; @@ -70,11 +70,11 @@ public: /// Print the contents. void dump (void) const; - // TAO_NOTIFY::Topology_Object + // TAO_Notify::Topology_Object - 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 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 release (void); }; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Event_Persistence_Factory.h b/TAO/orbsvcs/orbsvcs/Notify/Event_Persistence_Factory.h index 61134f2d30e..3d9ac08b43e 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Event_Persistence_Factory.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Event_Persistence_Factory.h @@ -21,20 +21,15 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "notify_export.h" +#include "notify_serv_export.h" -//#include "Event_Persistence_Strategy.h" -//#include "Persistent_File_Allocator.h" -//#include "Routing_Slip_Persistence_Manager.h" -//#include <ace/SString.h> - -namespace TAO_NOTIFY +namespace TAO_Notify { class Routing_Slip_Persistence_Manager; class Persistent_Callback; /// interface to be implemented by specific Event_Persistence_Factories - class TAO_Notify_Export Event_Persistence_Factory + class TAO_Notify_Serv_Export Event_Persistence_Factory { public: /// Create a Persistence Manager @@ -46,7 +41,7 @@ namespace TAO_NOTIFY virtual Routing_Slip_Persistence_Manager * first_reload_manager () = 0; }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #include /**/ "ace/post.h" #endif /* EVENT_PERSISTENCE_FACTORY_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Event_Persistence_Strategy.h b/TAO/orbsvcs/orbsvcs/Notify/Event_Persistence_Strategy.h index d2fcacf03c6..3ff9990b326 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Event_Persistence_Strategy.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Event_Persistence_Strategy.h @@ -21,16 +21,16 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "notify_export.h" +#include "notify_serv_export.h" #include "ace/Service_Object.h" -namespace TAO_NOTIFY +namespace TAO_Notify { class Event_Persistence_Factory; /// Interface to be implemented by specific strategies - class TAO_Notify_Export Event_Persistence_Strategy: public ACE_Service_Object + class TAO_Notify_Serv_Export Event_Persistence_Strategy: public ACE_Service_Object { public: @@ -41,7 +41,7 @@ namespace TAO_NOTIFY virtual void reset () = 0; }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #include /**/ "ace/post.h" #endif /* EVENT_PERSISTENCE_STRATEGY_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.cpp b/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.cpp index 9ec4a1099de..138b9e17ba6 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.cpp @@ -131,14 +131,14 @@ TAO_Notify_FilterAdmin::remove_all_filters (ACE_ENV_SINGLE_ARG_DECL) } void -TAO_Notify_FilterAdmin::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL) +TAO_Notify_FilterAdmin::save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL) { if (this->filter_list_.current_size() == 0) return; bool changed = true; - TAO_NOTIFY::NVPList attrs; + TAO_Notify::NVPList attrs; bool want_children = saver.begin_object(0, "filter_admin", attrs, changed ACE_ENV_ARG_PARAMETER); ACE_CHECK; if (want_children) @@ -152,11 +152,11 @@ TAO_Notify_FilterAdmin::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_E for (; iter.next(entry) != 0; iter.advance()) { - TAO_NOTIFY::NVPList fattrs; + TAO_Notify::NVPList fattrs; CORBA::Long id = entry->ext_id_; CORBA::String_var ior = orb->object_to_string(entry->int_id_.in() ACE_ENV_ARG_PARAMETER); ACE_CHECK; - fattrs.push_back(TAO_NOTIFY::NVP("IOR", ior.in())); + fattrs.push_back(TAO_Notify::NVP("IOR", ior.in())); saver.begin_object(id, "filter", fattrs, changed ACE_ENV_ARG_PARAMETER); ACE_CHECK; saver.end_object(id, "filter" ACE_ENV_ARG_PARAMETER); @@ -167,9 +167,9 @@ TAO_Notify_FilterAdmin::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_E saver.end_object(0, "filter_admin" ACE_ENV_ARG_PARAMETER); } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_FilterAdmin::load_child (const ACE_CString &type, CORBA::Long id, - const TAO_NOTIFY::NVPList& attrs ACE_ENV_ARG_DECL) + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { if (type == "filter") { diff --git a/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.h b/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.h index 04507e52599..d6e20116940 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.h +++ b/TAO/orbsvcs/orbsvcs/Notify/FilterAdmin.h @@ -31,7 +31,7 @@ * */ class TAO_Notify_Serv_Export TAO_Notify_FilterAdmin - : public TAO_NOTIFY::Topology_Object + : public TAO_Notify::Topology_Object { public: @@ -83,11 +83,11 @@ class TAO_Notify_Serv_Export TAO_Notify_FilterAdmin )); - // TAO_NOTIFY::Topology_Object + // TAO_Notify::Topology_Object - 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 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 release (void); private: typedef ACE_Hash_Map_Manager <CosNotifyFilter::FilterID, CosNotifyFilter::Filter_var, ACE_SYNCH_NULL_MUTEX> FILTER_LIST; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request.cpp b/TAO/orbsvcs/orbsvcs/Notify/Method_Request.cpp index a3e0c7ed7fc..fe5fc73f001 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request.cpp @@ -11,6 +11,5 @@ ACE_RCSID(Notify, TAO_Notify_Method_Request_Queueable, "$Id$") TAO_Notify_Method_Request_Queueable * TAO_Notify_Method_Request_Queueable::copy (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) { - /// @@ TODO rename this method to on_heap return this; } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request.h b/TAO/orbsvcs/orbsvcs/Notify/Method_Request.h index 452aa6ea050..248708a0eae 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request.h @@ -38,7 +38,6 @@ public: /// Execute the Request virtual int execute (ACE_ENV_SINGLE_ARG_DECL) = 0; virtual TAO_Notify_Method_Request_Queueable* copy (ACE_ENV_SINGLE_ARG_DECL) = 0; - }; /***********************************************************************/ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Dispatch.cpp b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Dispatch.cpp index 9644b050460..34a221597a7 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Dispatch.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Dispatch.cpp @@ -13,7 +13,14 @@ ACE_RCSID(Notify, TAO_Notify_Method_Request_Dispatch, "$Id$") #include "Consumer.h" #include "Admin.h" #include "ConsumerAdmin.h" - +#include "EventChannelFactory.h" +#include "ace/OS_NS_stdio.h" +//#define DEBUG_LEVEL 10 +#ifndef DEBUG_LEVEL +# define DEBUG_LEVEL TAO_debug_level +#endif //DEBUG_LEVEL + +// Constuct from event TAO_Notify_Method_Request_Dispatch::TAO_Notify_Method_Request_Dispatch ( const TAO_Notify_Event * event, TAO_Notify_ProxySupplier* proxy_supplier, @@ -24,6 +31,31 @@ TAO_Notify_Method_Request_Dispatch::TAO_Notify_Method_Request_Dispatch ( { } +// Construct from a delivery rquest +TAO_Notify_Method_Request_Dispatch::TAO_Notify_Method_Request_Dispatch ( + const TAO_Notify::Delivery_Request_Ptr & delivery, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering) + : TAO_Notify_Method_Request_Event (delivery) + , proxy_supplier_ (proxy_supplier) + , filtering_ (filtering) +{ +} + +// Constuct construct from another method request+event +// event is passed separately because we may be using a copy +// of the one in the previous method request +TAO_Notify_Method_Request_Dispatch::TAO_Notify_Method_Request_Dispatch ( + const TAO_Notify_Method_Request_Event & request, + const TAO_Notify_Event * event, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering) + : TAO_Notify_Method_Request_Event (request, event) + , proxy_supplier_ (proxy_supplier) + , filtering_ (filtering) +{ +} + TAO_Notify_Method_Request_Dispatch::~TAO_Notify_Method_Request_Dispatch () { } @@ -71,61 +103,115 @@ TAO_Notify_Method_Request_Dispatch::execute_i (ACE_ENV_SINGLE_ARG_DECL) return 0; } -/////////////////////////////////////////////////////////////////////////////// - - -/*******************************************************************/ - -TAO_Notify_Method_Request_Event::TAO_Notify_Method_Request_Event ( - const TAO_Notify_Event * event) - : event_ (event) -{ -} - - -TAO_Notify_Method_Request_Event::TAO_Notify_Method_Request_Event ( - const TAO_Notify_Method_Request_Event & rhs, - const TAO_Notify_Event * event) - : event_ (event) +/// Static method used to reconstruct a Method Request Dispatch +TAO_Notify_Method_Request_Dispatch_Queueable * +TAO_Notify_Method_Request_Dispatch::unmarshal ( + TAO_Notify::Delivery_Request_Ptr & delivery_request, + TAO_Notify_EventChannelFactory &ecf, + TAO_InputCDR & cdr + ACE_ENV_ARG_DECL) { -} + bool ok = true; + TAO_Notify_Method_Request_Dispatch_Queueable * result = 0; + ACE_CString textpath; + CORBA::ULong count; + if (cdr.read_ulong (count)) + { + TAO_Notify::IdVec id_path (count); + for (size_t nid = 0; ok && nid < count; ++nid) + { + TAO_Notify_Object::ID id = 0; + if ( cdr.read_long (id)) + { + id_path.push_back (id); + char idbuf[20]; + ACE_OS::snprintf (idbuf, sizeof(idbuf)-1, "/%d", ACE_static_cast (int, id)); + textpath += idbuf; + } + else + { + ok = false; + } + } -TAO_Notify_Method_Request_Event::~TAO_Notify_Method_Request_Event() -{ + if (ok) + { + TAO_Notify_ProxySupplier* proxy_supplier = ecf.find_proxy_supplier (id_path, + 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + if (proxy_supplier != 0) + { + if (DEBUG_LEVEL > 6) ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) TAO_Notify_Method_Request_Dispatch reload event for %s\n") + , textpath.c_str() + )); + ACE_NEW_NORETURN (result, + TAO_Notify_Method_Request_Dispatch_Queueable (delivery_request, proxy_supplier, true)); + } + else + { + TAO_Notify_ProxyConsumer * proxy_consumer = ecf.find_proxy_consumer (id_path, 0 ACE_ENV_ARG_PARAMETER); //@@todo + if (proxy_consumer == 0) + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) TAO_Notify_Method_Request_Dispatch::unmarshal: unknown proxy id %s\n") + , textpath.c_str() + )); + } + else + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) TAO_Notify_Method_Request_Dispatch::unmarshal: wrong type of proxy id %s\n") + , textpath.c_str() + )); + } + } + } + else + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) TAO_Notify_Method_Request_Dispatch::unmarshal: Cant read proxy id path\n") + )); + } + } + return result; } -void -TAO_Notify_Method_Request_Event::complete () -{ - int todo_request_complete; -} +/////////////////////////////////////////////////////////////////////////////// -unsigned long -TAO_Notify_Method_Request_Event::sequence () -{ - int todo_request_sequence; - return 0; -} +/*******************************************************************/ -bool -TAO_Notify_Method_Request_Event::should_retry () +// Constuct construct from another method request+event +// event is passed separately because we may be using a copy +// of the one in the previous method request +TAO_Notify_Method_Request_Dispatch_Queueable::TAO_Notify_Method_Request_Dispatch_Queueable ( + const TAO_Notify_Method_Request_Event & request, + TAO_Notify_Event_var & event, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering) + : TAO_Notify_Method_Request_Queueable (event.get ()) + , TAO_Notify_Method_Request_Dispatch (request, event.get (), proxy_supplier, filtering) { - int todo_request_should_retry; - return false; +#if 0 + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) Construct Method_Request_Dispatch @%@\n"), + this)); +#endif } -/**********************************************************/ - -TAO_Notify_Method_Request_Dispatch_Queueable::TAO_Notify_Method_Request_Dispatch_Queueable (const TAO_Notify_Event_var& event, TAO_Notify_ProxySupplier* proxy_supplier, CORBA::Boolean filtering) - : TAO_Notify_Method_Request_Queueable (event.get ()) - , TAO_Notify_Method_Request_Dispatch (event.get(), proxy_supplier, filtering) - , event_var_ (event) - , proxy_guard_ (proxy_supplier) + /// Constuct construct from Delivery Request + /// should ONLY be used by unmarshall +TAO_Notify_Method_Request_Dispatch_Queueable::TAO_Notify_Method_Request_Dispatch_Queueable ( + const TAO_Notify::Delivery_Request_Ptr & request, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering) + : TAO_Notify_Method_Request_Queueable (request->event ().get ()) + , TAO_Notify_Method_Request_Dispatch (request, request->event ().get (), proxy_supplier, filtering) { #if 0 ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%P|%t) Construct Method_Request_Dispatch @%@\n"), + ACE_TEXT ("(%P|%t) Construct unmarshalled Method_Request_Dispatch_Queueable @%@\n"), this)); #endif } @@ -147,7 +233,10 @@ TAO_Notify_Method_Request_Dispatch_Queueable::execute (ACE_ENV_SINGLE_ARG_DECL) /*********************************************************************************************************/ -TAO_Notify_Method_Request_Dispatch_No_Copy::TAO_Notify_Method_Request_Dispatch_No_Copy (const TAO_Notify_Event* event, TAO_Notify_ProxySupplier* proxy_supplier, CORBA::Boolean filtering) +TAO_Notify_Method_Request_Dispatch_No_Copy::TAO_Notify_Method_Request_Dispatch_No_Copy ( + const TAO_Notify_Event* event, + TAO_Notify_ProxySupplier* proxy_supplier, + CORBA::Boolean filtering) : TAO_Notify_Method_Request_Dispatch (event, proxy_supplier, filtering) { #if 0 @@ -155,7 +244,19 @@ TAO_Notify_Method_Request_Dispatch_No_Copy::TAO_Notify_Method_Request_Dispatch_N ACE_TEXT ("(%P|%t) Construct Method_Request_Dispatch_No_Copy @%@\n"), this)); #endif - +} + /// Constuct construct from another method request +TAO_Notify_Method_Request_Dispatch_No_Copy::TAO_Notify_Method_Request_Dispatch_No_Copy ( + const TAO_Notify_Method_Request_Event & request, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering) + : TAO_Notify_Method_Request_Dispatch (request, request.event (), proxy_supplier, filtering) +{ +#if 0 + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) Construct Method_Request_Dispatch_No_Copy @%@\n"), + this)); +#endif } TAO_Notify_Method_Request_Dispatch_No_Copy:: ~TAO_Notify_Method_Request_Dispatch_No_Copy () @@ -178,13 +279,12 @@ TAO_Notify_Method_Request_Dispatch_No_Copy::copy (ACE_ENV_SINGLE_ARG_DECL) { TAO_Notify_Method_Request_Queueable* request; - const TAO_Notify_Event * event_copy = this->event_->queueable_copy (ACE_ENV_SINGLE_ARG_PARAMETER); + TAO_Notify_Event_var event_var; + this->event_->queueable_copy (event_var ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - TAO_Notify_Event_Copy_var event_var (event_copy); - ACE_NEW_THROW_EX (request, - TAO_Notify_Method_Request_Dispatch_Queueable (event_var, this->proxy_supplier_, this->filtering_), + TAO_Notify_Method_Request_Dispatch_Queueable (*this, event_var, this->proxy_supplier_, this->filtering_), CORBA::INTERNAL ()); return request; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Dispatch.h b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Dispatch.h index 40d4490e27e..8d1def68240 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Dispatch.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Dispatch.h @@ -23,7 +23,11 @@ #include "Refcountable.h" #include "Method_Request_Event.h" #include "ProxySupplier.h" +#include "Delivery_Request.h" +class TAO_Notify_EventChannelFactory; +class TAO_InputCDR; +class TAO_Notify_Method_Request_Dispatch_Queueable; /** * @class TAO_Notify_Method_Request_Dispatch @@ -35,14 +39,42 @@ class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Dispatch : public TAO_Notify_Method_Request_Event { public: - /// Constuctor - TAO_Notify_Method_Request_Dispatch (const TAO_Notify_Event *, - TAO_Notify_ProxySupplier* proxy, - bool filtering); + /// an arbitrary code (Octet) to identify this delivery method type in persistent storage + enum {persistence_code = 1}; + + /// Constuct from event + TAO_Notify_Method_Request_Dispatch ( + const TAO_Notify_Event * event, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering); + + /// Construct from a delivery rquest + TAO_Notify_Method_Request_Dispatch ( + const TAO_Notify::Delivery_Request_Ptr & delivery, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering); + + /// Constuct construct from another method request+event + /// event is passed separately because we may be using a copy + /// of the one in the previous method request + TAO_Notify_Method_Request_Dispatch ( + const TAO_Notify_Method_Request_Event & request, + const TAO_Notify_Event * event, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering); +public: /// Destructor virtual ~TAO_Notify_Method_Request_Dispatch (); + /// Static method used to reconstruct a Method Request Dispatch + static TAO_Notify_Method_Request_Dispatch_Queueable * unmarshal ( + TAO_Notify::Delivery_Request_Ptr & delivery_request, + TAO_Notify_EventChannelFactory &ecf, + TAO_InputCDR & cdr + ACE_ENV_ARG_DECL); + + protected: /// Execute the dispatch operation. int execute_i (ACE_ENV_SINGLE_ARG_DECL); @@ -67,8 +99,21 @@ class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Dispatch_Queueable , public TAO_Notify_Method_Request_Queueable { public: - /// Constuctor - TAO_Notify_Method_Request_Dispatch_Queueable (const TAO_Notify_Event_var& event, TAO_Notify_ProxySupplier* proxy_supplier, CORBA::Boolean filtering); + /// Constuct construct from another method request+event + /// event is passed separately because we may be using a copy + /// of the one in the previous method request + TAO_Notify_Method_Request_Dispatch_Queueable ( + const TAO_Notify_Method_Request_Event & request, + TAO_Notify_Event_var & event, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering); + + /// Constuct construct from Delivery Request + /// should ONLY be used by unmarshall + TAO_Notify_Method_Request_Dispatch_Queueable ( + const TAO_Notify::Delivery_Request_Ptr & request, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering); /// Destructor ~TAO_Notify_Method_Request_Dispatch_Queueable (); @@ -94,8 +139,17 @@ class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Dispatch_No_Copy , public TAO_Notify_Method_Request { public: - /// Constuctor - TAO_Notify_Method_Request_Dispatch_No_Copy (const TAO_Notify_Event* event, TAO_Notify_ProxySupplier* proxy_supplier, CORBA::Boolean filtering); + /// Constuct from event + TAO_Notify_Method_Request_Dispatch_No_Copy ( + const TAO_Notify_Event * event, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering); + + /// Constuct construct from another method request + TAO_Notify_Method_Request_Dispatch_No_Copy ( + const TAO_Notify_Method_Request_Event & request, + TAO_Notify_ProxySupplier* proxy_supplier, + bool filtering); /// Destructor ~TAO_Notify_Method_Request_Dispatch_No_Copy (); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.cpp b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.cpp index 549c0a82ecb..b789f818925 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.cpp @@ -6,8 +6,68 @@ #include "Method_Request_Event.inl" #endif /* __ACE_INLINE__ */ +#include "Delivery_Request.h" + ACE_RCSID (Notify, TAO_Notify_Method_Request_Event_Queueable, "$Id$") +TAO_Notify_Method_Request_Event::TAO_Notify_Method_Request_Event ( + const TAO_Notify_Event * event) + : event_ (event) +{ +} + +TAO_Notify_Method_Request_Event::TAO_Notify_Method_Request_Event ( + const TAO_Notify::Delivery_Request_Ptr & request) + : event_ (request->event ().get ()) + , delivery_request_ (request) +{ +} + +TAO_Notify_Method_Request_Event::TAO_Notify_Method_Request_Event ( + const TAO_Notify_Method_Request_Event & rhs, + const TAO_Notify_Event * event) + : event_ (event) + , delivery_request_ (rhs.delivery_request_) +{ +} + +TAO_Notify_Method_Request_Event::~TAO_Notify_Method_Request_Event() +{ +} + +void +TAO_Notify_Method_Request_Event::complete () +{ + if (this->delivery_request_.get () != 0) + { + this->delivery_request_->complete (); + } +} + + +unsigned long +TAO_Notify_Method_Request_Event::sequence () +{ + if (this->delivery_request_.get () != 0) + { + return this->delivery_request_->sequence (); + } + return 0; +} + +bool +TAO_Notify_Method_Request_Event::should_retry () +{ + if (this->delivery_request_.get () != 0) + { + return this->delivery_request_->should_retry (); + } + return false; +} + +/**********************************************************/ + + TAO_Notify_Method_Request_Event_Queueable::TAO_Notify_Method_Request_Event_Queueable ( const TAO_Notify_Method_Request_Event & prev_request, const TAO_Notify_Event_var & event_var) @@ -17,12 +77,22 @@ TAO_Notify_Method_Request_Event_Queueable::TAO_Notify_Method_Request_Event_Queue { } +TAO_Notify_Method_Request_Event_Queueable::TAO_Notify_Method_Request_Event_Queueable ( + TAO_Notify::Delivery_Request_Ptr & request) + : TAO_Notify_Method_Request_Queueable (request->event ().get ()) + , TAO_Notify_Method_Request_Event (request, request->event ().get ()) + , event_var_ (request->event ()) +{ +} + TAO_Notify_Method_Request_Event_Queueable::~TAO_Notify_Method_Request_Event_Queueable () { } + int TAO_Notify_Method_Request_Event_Queueable::execute (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) { + ACE_ASSERT (false); return -1; } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.h b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.h index 8a817d62142..13707a77e72 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.h @@ -24,21 +24,25 @@ #include "ProxySupplier.h" #include "tao/Basic_Types.h" #include "ace/CORBA_macros.h" - +#include "Delivery_Request.h" /** * @class TAO_Notify_Method_Request_Event * - * @brief + * @brief A base class for all Method Requests that are associated with events. * */ class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Event { -protected: - /// Constuctor +public: + /// Construct from event TAO_Notify_Method_Request_Event (const TAO_Notify_Event *); - /// Copy-like constructor + /// Construct from a delivery request + TAO_Notify_Method_Request_Event ( + const TAO_Notify::Delivery_Request_Ptr & delivery_request); + + /// Construct from another Method Request /// Event is passed separately because it may be a copy of the one in request. TAO_Notify_Method_Request_Event (const TAO_Notify_Method_Request_Event & rhs, const TAO_Notify_Event * event); @@ -48,7 +52,6 @@ public: virtual ~TAO_Notify_Method_Request_Event (); const TAO_Notify_Event * event() const; - void complete (); unsigned long sequence (); bool should_retry (); @@ -57,6 +60,9 @@ protected: /// The Event const TAO_Notify_Event * event_; + + /// Pointer to the routing slip's delivery request (if any) + TAO_Notify::Delivery_Request_Ptr delivery_request_; }; /***************************************************************/ @@ -79,6 +85,9 @@ public: const TAO_Notify_Method_Request_Event & prev_request, const TAO_Notify_Event_var & event_var); + TAO_Notify_Method_Request_Event_Queueable ( + TAO_Notify::Delivery_Request_Ptr & request); + /// Destructor virtual ~TAO_Notify_Method_Request_Event_Queueable (); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.inl b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.inl index 594304747ec..74e88caa0c5 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.inl +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Event.inl @@ -1,3 +1,2 @@ // $Id$ -#include "Method_Request_Event.h" diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Lookup.cpp b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Lookup.cpp index fb800e72120..57c4528586b 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Lookup.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Lookup.cpp @@ -17,6 +17,8 @@ ACE_RCSID(Notify, TAO_Notify_Method_Request_Lookup, "$Id$") #include "SupplierAdmin.h" #include "Event_Manager.h" #include "Method_Request_Dispatch.h" +#include "Delivery_Request.h" +#include "EventChannelFactory.h" TAO_Notify_Method_Request_Lookup::TAO_Notify_Method_Request_Lookup ( const TAO_Notify_Event * event, @@ -35,7 +37,7 @@ TAO_Notify_Method_Request_Lookup::work ( TAO_Notify_ProxySupplier* proxy_supplier ACE_ENV_ARG_DECL) { - TAO_Notify_Method_Request_Dispatch_No_Copy request (this->event_, proxy_supplier, true); + TAO_Notify_Method_Request_Dispatch_No_Copy request (*this, proxy_supplier, true); proxy_supplier->deliver (request ACE_ENV_ARG_PARAMETER); } @@ -81,10 +83,67 @@ TAO_Notify_Method_Request_Lookup::execute_i (ACE_ENV_SINGLE_ARG_DECL) if (consumers != 0) consumers->for_each (this ACE_ENV_ARG_PARAMETER); - + this->complete (); return 0; } +/// Static method used to reconstruct a Method Request Dispatch +TAO_Notify_Method_Request_Lookup_Queueable * +TAO_Notify_Method_Request_Lookup::unmarshal ( + TAO_Notify::Delivery_Request_Ptr & delivery_request, + TAO_Notify_EventChannelFactory &ecf, + TAO_InputCDR & cdr + ACE_ENV_ARG_DECL) +{ + bool ok = true; + TAO_Notify_Method_Request_Lookup_Queueable * result = 0; + CORBA::ULong count; + if (cdr.read_ulong (count)) + { + TAO_Notify::IdVec id_path (count); + for (size_t nid = 0; ok && nid < count; ++nid) + { + TAO_Notify_Object::ID id = 0; + if ( cdr.read_long (id)) + { + id_path.push_back (id); + } + else + { + ok = false; + } + } + + if (ok) + { + TAO_Notify_ProxyConsumer * proxy_consumer = ecf.find_proxy_consumer ( + id_path, + 0 ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN(0); + if (proxy_consumer != 0) + { + ACE_NEW_NORETURN (result, + TAO_Notify_Method_Request_Lookup_Queueable (delivery_request, proxy_consumer)); + } + else + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) TAO_Notify_Method_Request_Lookup_No_Copy::unmarshal: unknown proxy id\n") + )); + } + } + else + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) TAO_Notify_Method_Request_Lookup_No_Copy::unmarshal: Cant read proxy id path\n") + )); + } + } + return result; + +} + + /****************************************************************/ TAO_Notify_Method_Request_Lookup_Queueable::TAO_Notify_Method_Request_Lookup_Queueable ( @@ -97,6 +156,17 @@ TAO_Notify_Method_Request_Lookup_Queueable::TAO_Notify_Method_Request_Lookup_Que { } +TAO_Notify_Method_Request_Lookup_Queueable::TAO_Notify_Method_Request_Lookup_Queueable ( + TAO_Notify::Delivery_Request_Ptr & request, + TAO_Notify_ProxyConsumer * proxy_consumer) + : TAO_Notify_Method_Request_Queueable (request->event ().get ()) + , TAO_Notify_Method_Request_Lookup (request->event ().get (), proxy_consumer) + , event_var_ (request->event ()) + , proxy_guard_ (proxy_consumer) +{ +} + + TAO_Notify_Method_Request_Lookup_Queueable::~TAO_Notify_Method_Request_Lookup_Queueable () { } @@ -131,11 +201,10 @@ TAO_Notify_Method_Request_Lookup_No_Copy::copy (ACE_ENV_SINGLE_ARG_DECL) { TAO_Notify_Method_Request_Queueable* request; - const TAO_Notify_Event* event_copy = this->event_->queueable_copy (ACE_ENV_SINGLE_ARG_PARAMETER); + TAO_Notify_Event_var event_var; + this->event_->queueable_copy (event_var ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); - TAO_Notify_Event_Copy_var event_var (event_copy); - ACE_NEW_THROW_EX (request, TAO_Notify_Method_Request_Lookup_Queueable (event_var, this->proxy_consumer_), CORBA::INTERNAL ()); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Lookup.h b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Lookup.h index 53ce9cf714c..89d9b8f6c1b 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Lookup.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Method_Request_Lookup.h @@ -24,7 +24,9 @@ #include "ProxySupplier.h" #include "ProxyConsumer.h" #include "Consumer_Map.h" +#include "Delivery_Request.h" +class TAO_Notify_Method_Request_Lookup_Queueable; class TAO_Notify_Event; /** @@ -38,9 +40,20 @@ class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Lookup , public TAO_Notify_Method_Request_Event { public: + + /// an arbitrary code (Octet) to identify this type of request in persistent storage + enum {persistence_code = 2}; + /// Destructor virtual ~TAO_Notify_Method_Request_Lookup (); + /// Static method used to reconstruct a Method Request Dispatch + static TAO_Notify_Method_Request_Lookup_Queueable * unmarshal ( + TAO_Notify::Delivery_Request_Ptr & delivery_request, + TAO_Notify_EventChannelFactory &ecf, + TAO_InputCDR & cdr + ACE_ENV_ARG_DECL); + protected: /// Constuctor TAO_Notify_Method_Request_Lookup (const TAO_Notify_Event * event, TAO_Notify_ProxyConsumer * proxy); @@ -70,10 +83,15 @@ class TAO_Notify_Serv_Export TAO_Notify_Method_Request_Lookup_Queueable , public TAO_Notify_Method_Request_Queueable { public: - /// Constuctor + /// Constuctor from event TAO_Notify_Method_Request_Lookup_Queueable ( const TAO_Notify_Event_var& event, - TAO_Notify_ProxyConsumer* proxy_consumer); + TAO_Notify_ProxyConsumer * proxy_consumer); + + /// Constuctor from delivery request + TAO_Notify_Method_Request_Lookup_Queueable ( + TAO_Notify::Delivery_Request_Ptr & request, + TAO_Notify_ProxyConsumer * proxy_consumer); /// Destructor ~TAO_Notify_Method_Request_Lookup_Queueable (); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Name_Value_Pair.cpp b/TAO/orbsvcs/orbsvcs/Notify/Name_Value_Pair.cpp index 95baf13ee69..0fd7509d890 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Name_Value_Pair.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Name_Value_Pair.cpp @@ -34,7 +34,7 @@ namespace } } -namespace TAO_NOTIFY +namespace TAO_Notify { NVP::NVP() { @@ -214,14 +214,14 @@ namespace TAO_NOTIFY return list_[ndx]; } -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Array_Base<TAO_NOTIFY::NVP>; -template class ACE_Array<TAO_NOTIFY::NVP>; -template class ACE_Vector<TAO_NOTIFY::NVP>; +template class ACE_Array_Base<TAO_Notify::NVP>; +template class ACE_Array<TAO_Notify::NVP>; +template class ACE_Vector<TAO_Notify::NVP>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Array_Base<TAO_NOTIFY::NVP> -#pragma instantiate ACE_Array<TAO_NOTIFY::NVP> -#pragma instantiate ACE_Vector<TAO_NOTIFY::NVP> +#pragma instantiate ACE_Array_Base<TAO_Notify::NVP> +#pragma instantiate ACE_Array<TAO_Notify::NVP> +#pragma instantiate ACE_Vector<TAO_Notify::NVP> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Name_Value_Pair.h b/TAO/orbsvcs/orbsvcs/Notify/Name_Value_Pair.h index 7ce73e458db..0b569a7e77c 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Name_Value_Pair.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Name_Value_Pair.h @@ -25,7 +25,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { /** * \brief Name/Value Pair @@ -92,7 +92,7 @@ namespace TAO_NOTIFY private: ACE_Vector<NVP> list_; }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #if defined (__ACE_INLINE__) #include "Name_Value_Pair.inl" diff --git a/TAO/orbsvcs/orbsvcs/Notify/Object.cpp b/TAO/orbsvcs/orbsvcs/Notify/Object.cpp index 6ad873f70ab..61c305edb6d 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Object.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Object.cpp @@ -305,37 +305,37 @@ TAO_Notify_Object::timer (void) namespace { template<class T> - void add_qos_attr(TAO_NOTIFY::NVPList& attrs, const T& prop) { + void add_qos_attr(TAO_Notify::NVPList& attrs, const T& prop) { if (prop.is_valid()) { - attrs.push_back(TAO_NOTIFY::NVP (prop)); + attrs.push_back(TAO_Notify::NVP (prop)); } } // Note : These instantiations have to be here because each namespace {} // is unique. #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template void add_qos_attr<TAO_Notify_Property_Boolean>( - TAO_NOTIFY::NVPList&, const TAO_Notify_Property_Boolean&); + TAO_Notify::NVPList&, const TAO_Notify_Property_Boolean&); template void add_qos_attr<TAO_Notify_Property_T<int> >( - TAO_NOTIFY::NVPList&, const TAO_Notify_Property_T<int>&); + TAO_Notify::NVPList&, const TAO_Notify_Property_T<int>&); template void add_qos_attr<TAO_Notify_Property_T<unsigned long long> >( - TAO_NOTIFY::NVPList&, const TAO_Notify_Property_T<unsigned long long>&); + TAO_Notify::NVPList&, const TAO_Notify_Property_T<unsigned long long>&); template void add_qos_attr<TAO_Notify_Property_T<short> >( - TAO_NOTIFY::NVPList&, const TAO_Notify_Property_T<short>&); + TAO_Notify::NVPList&, const TAO_Notify_Property_T<short>&); #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate void add_qos_attr<TAO_Notify_Property_Boolean>(\ - TAO_NOTIFY::NVPList&, const TAO_Notify_Property_Boolean&) + TAO_Notify::NVPList&, const TAO_Notify_Property_Boolean&) #pragma instantiate void add_qos_attr<TAO_Notify_Property_T<int> >(\ - TAO_NOTIFY::NVPList&, const TAO_Notify_Property_T<int>&) + TAO_Notify::NVPList&, const TAO_Notify_Property_T<int>&) #pragma instantiate void add_qos_attr<TAO_Notify_Property_T<unsigned long long> >(\ - TAO_NOTIFY::NVPList&, const TAO_Notify_Property_T<unsigned long long>&) + TAO_Notify::NVPList&, const TAO_Notify_Property_T<unsigned long long>&) #pragma instantiate void add_qos_attr<TAO_Notify_Property_T<short> >(\ - TAO_NOTIFY::NVPList&, const TAO_Notify_Property_T<short>&) + TAO_Notify::NVPList&, const TAO_Notify_Property_T<short>&) #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ } // namespace void -TAO_Notify_Object::save_attrs (TAO_NOTIFY::NVPList& attrs) +TAO_Notify_Object::save_attrs (TAO_Notify::NVPList& attrs) { add_qos_attr(attrs, this->qos_properties_.event_reliability ()); add_qos_attr(attrs, this->qos_properties_.connection_reliability ()); @@ -347,7 +347,7 @@ TAO_Notify_Object::save_attrs (TAO_NOTIFY::NVPList& attrs) } void -TAO_Notify_Object::load_attrs(const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_Object::load_attrs(const TAO_Notify::NVPList& attrs) { attrs.load (this->qos_properties_.event_reliability ()); attrs.load (this->qos_properties_.connection_reliability ()); diff --git a/TAO/orbsvcs/orbsvcs/Notify/Object.h b/TAO/orbsvcs/orbsvcs/Notify/Object.h index 7c95ea99c07..2ff8aa537eb 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Object.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Object.h @@ -120,7 +120,7 @@ public: /// Load our attributes. Each derived type should call the superclass /// load first before loading its own attributes. - virtual void load_attrs(const TAO_NOTIFY::NVPList& attrs); + virtual void load_attrs(const TAO_Notify::NVPList& attrs); protected: /// Init this object with data from <rhs>. @@ -141,7 +141,7 @@ protected: /// Called by derived types to save their attributes. Each /// derived type should call its superclass version before /// saving its own attrs. - virtual void save_attrs(TAO_NOTIFY::NVPList& attrs); + virtual void save_attrs(TAO_Notify::NVPList& attrs); ///= Protected data members. diff --git a/TAO/orbsvcs/orbsvcs/Notify/POA_Helper.cpp b/TAO/orbsvcs/orbsvcs/Notify/POA_Helper.cpp index 95817d46083..6315d38f3e9 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/POA_Helper.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/POA_Helper.cpp @@ -9,7 +9,10 @@ ACE_RCSID(RT_Notify, TAO_Notify_POA_Helper, "$Id$") #include "tao/debug.h" -#include "ID_Factory.h" +//#define DEBUG_LEVEL 10 +#ifndef DEBUG_LEVEL +# define DEBUG_LEVEL TAO_debug_level +#endif // DEBUG_LEVEL TAO_Notify_POA_Helper::TAO_Notify_POA_Helper (void) { @@ -81,7 +84,7 @@ TAO_Notify_POA_Helper::create_i (PortableServer::POA_ptr parent_poa, const char* ACE_ENV_ARG_PARAMETER); ACE_CHECK; - if (TAO_debug_level > 0) + if (DEBUG_LEVEL > 0) ACE_DEBUG ((LM_DEBUG, "Created POA : %s\n", this->poa_->the_name ())); /* // Destroy the policies @@ -125,13 +128,10 @@ TAO_Notify_POA_Helper::long_to_ObjectId (CORBA::Long id ACE_ENV_ARG_DECL) const CORBA::Object_ptr TAO_Notify_POA_Helper::activate (PortableServer::Servant servant, CORBA::Long& id ACE_ENV_ARG_DECL) { - /// ID Factory for objects. - static TAO_Notify_ID_Factory id_factory; - // Generate a new ID. - id = id_factory.id (); + id = this->id_factory_.id (); - if (TAO_debug_level > 0) + if (DEBUG_LEVEL > 0) ACE_DEBUG ((LM_DEBUG, "Activating object with id = %d in POA : %s\n", id, this->poa_->the_name ())); // Convert CORBA::Long to ObjectId @@ -151,8 +151,9 @@ TAO_Notify_POA_Helper::activate (PortableServer::Servant servant, CORBA::Long& i CORBA::Object_ptr TAO_Notify_POA_Helper::activate_with_id (PortableServer::Servant servant, CORBA::Long id ACE_ENV_ARG_DECL) { - if (TAO_debug_level > 0) + if (DEBUG_LEVEL > 0) ACE_DEBUG ((LM_DEBUG, "Activating object with existing id = %d in POA : %s\n", id, this->poa_->the_name ())); + this->id_factory_.set_last_used (id); // Convert CORBA::Long to ObjectId PortableServer::ObjectId_var oid = diff --git a/TAO/orbsvcs/orbsvcs/Notify/POA_Helper.h b/TAO/orbsvcs/orbsvcs/Notify/POA_Helper.h index bd3e0ed6a38..01c79ed3665 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/POA_Helper.h +++ b/TAO/orbsvcs/orbsvcs/Notify/POA_Helper.h @@ -23,6 +23,7 @@ #include "ace/Copy_Disabled.h" #include "tao/PortableServer/PortableServer.h" +#include "ID_Factory.h" /** * @class TAO_Notify_POA_Helper @@ -78,11 +79,15 @@ protected: /// Generate a unique id for each POA created. ACE_CString get_unique_id (void); + /// Convert id to ObjectID + PortableServer::ObjectId* long_to_ObjectId (CORBA::Long id ACE_ENV_ARG_DECL) const; + +protected: /// POA PortableServer::POA_var poa_; - /// Convert id to ObjectID - PortableServer::ObjectId* long_to_ObjectId (CORBA::Long id ACE_ENV_ARG_DECL) const; + /// ID Factory for objects. + TAO_Notify_ID_Factory id_factory_; }; #if defined (__ACE_INLINE__) diff --git a/TAO/orbsvcs/orbsvcs/Notify/Persistent_File_Allocator.cpp b/TAO/orbsvcs/orbsvcs/Notify/Persistent_File_Allocator.cpp index 21c13c328c6..24f960f74f4 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Persistent_File_Allocator.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Persistent_File_Allocator.cpp @@ -6,11 +6,9 @@ #include "ace/OS_NS_string.h" //#define DEBUG_LEVEL 9 -#ifndef DEBUG_LEVEL -# define DEBUG_LEVEL TAO_debug_level -#endif //DEBUG_LEVEL +#define DEBUG_LEVEL TAO_debug_level -namespace TAO_NOTIFY +namespace TAO_Notify { Persistent_Storage_Block::Persistent_Storage_Block(const size_t block_number, @@ -386,18 +384,18 @@ Persistent_File_Allocator::run() this->thread_active_ = false; } -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Node<size_t>; template class ACE_Unbounded_Stack<size_t>; -template class ACE_Node<TAO_NOTIFY::Persistent_Storage_Block*>; -template class ACE_Unbounded_Queue<TAO_NOTIFY::Persistent_Storage_Block*>; -template class ACE_Unbounded_Queue_Iterator<TAO_NOTIFY::Persistent_Storage_Block*>; +template class ACE_Node<TAO_Notify::Persistent_Storage_Block*>; +template class ACE_Unbounded_Queue<TAO_Notify::Persistent_Storage_Block*>; +template class ACE_Unbounded_Queue_Iterator<TAO_Notify::Persistent_Storage_Block*>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Node<size_t> #pragma instantiate ACE_Unbounded_Stack<size_t> -#pragma instantiate ACE_Node<TAO_NOTIFY::Persistent_Storage_Block*> -#pragma instantiate ACE_Unbounded_Queue<TAO_NOTIFY::Persistent_Storage_Block*> -#pragma instantiate ACE_Unbounded_Queue_Iterator<TAO_NOTIFY::Persistent_Storage_Block*> +#pragma instantiate ACE_Node<TAO_Notify::Persistent_Storage_Block*> +#pragma instantiate ACE_Unbounded_Queue<TAO_Notify::Persistent_Storage_Block*> +#pragma instantiate ACE_Unbounded_Queue_Iterator<TAO_Notify::Persistent_Storage_Block*> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Persistent_File_Allocator.h b/TAO/orbsvcs/orbsvcs/Notify/Persistent_File_Allocator.h index 07bfd08bd54..15b1e4eb713 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Persistent_File_Allocator.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Persistent_File_Allocator.h @@ -30,7 +30,7 @@ #include "ace/Unbounded_Queue.h" #include "ace/Thread_Manager.h" -namespace TAO_NOTIFY +namespace TAO_Notify { @@ -197,7 +197,7 @@ private: ACE_SYNCH_CONDITION wake_up_thread_; }; -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ #include /**/ "ace/post.h" #endif /* PERSISTENT_FILE_ALLOCATOR_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Proxy.cpp b/TAO/orbsvcs/orbsvcs/Notify/Proxy.cpp index ab109a6a674..acac3ec9c2b 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Proxy.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Proxy.cpp @@ -125,7 +125,7 @@ TAO_Notify_Proxy::qos_changed (const TAO_Notify_QoSProperties& qos_properties) } void -TAO_Notify_Proxy::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL) +TAO_Notify_Proxy::save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL) { bool changed = this->children_changed_; this->children_changed_ = false; @@ -133,7 +133,7 @@ TAO_Notify_Proxy::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG if (is_persistent ()) { - TAO_NOTIFY::NVPList attrs; + TAO_Notify::NVPList attrs; this->save_attrs(attrs); const char * type_name = this->get_proxy_type_name (); @@ -159,7 +159,7 @@ TAO_Notify_Proxy::save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG } void -TAO_Notify_Proxy::save_attrs (TAO_NOTIFY::NVPList& attrs) +TAO_Notify_Proxy::save_attrs (TAO_Notify::NVPList& attrs) { TAO_Notify_Object::save_attrs(attrs); TAO_Notify_Peer * peer = this->peer(); @@ -168,16 +168,16 @@ TAO_Notify_Proxy::save_attrs (TAO_NOTIFY::NVPList& attrs) ACE_CString ior; if (peer->get_ior(ior)) { - attrs.push_back (TAO_NOTIFY::NVP("PeerIOR", ior)); + attrs.push_back (TAO_Notify::NVP("PeerIOR", ior)); } } } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_Proxy::load_child (const ACE_CString &type, CORBA::Long id, - const TAO_NOTIFY::NVPList& attrs ACE_ENV_ARG_DECL) + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { - TAO_NOTIFY::Topology_Object* result = this; + TAO_Notify::Topology_Object* result = this; if (type == "subscriptions") { // since we initialized our subscribed types to everything diff --git a/TAO/orbsvcs/orbsvcs/Notify/Proxy.h b/TAO/orbsvcs/orbsvcs/Notify/Proxy.h index e714e6e3a5c..f98a571a2e0 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Proxy.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Proxy.h @@ -36,7 +36,7 @@ class TAO_Notify_Peer; * */ class TAO_Notify_Serv_Export TAO_Notify_Proxy - : public TAO_NOTIFY::Topology_Parent + : public TAO_Notify::Topology_Parent { friend class TAO_Notify_Peer; @@ -106,14 +106,14 @@ public: /// Override, TAO_Notify_Object::qos_changed virtual void qos_changed (const TAO_Notify_QoSProperties& qos_properties); - // TAO_NOTIFY::Topology_Object + // TAO_Notify::Topology_Object - virtual void save_persistent (TAO_NOTIFY::Topology_Saver& saver ACE_ENV_ARG_DECL); - virtual void save_attrs(TAO_NOTIFY::NVPList& attrs); + virtual void save_persistent (TAO_Notify::Topology_Saver& saver ACE_ENV_ARG_DECL); + virtual void save_attrs(TAO_Notify::NVPList& attrs); virtual const char * get_proxy_type_name (void) const = 0; - virtual TAO_NOTIFY::Topology_Object* load_child (const ACE_CString &type, CORBA::Long id, - const TAO_NOTIFY::NVPList& attrs 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); protected: diff --git a/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp index 51bcae25d25..77c6bad51dd 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.cpp @@ -19,6 +19,12 @@ ACE_RCSID(RT_Notify, TAO_Notify_ProxyConsumer, "$Id$") #include "Worker_Task.h" #include "Properties.h" #include "SupplierAdmin.h" +#include "EventChannel.h" +#include "Routing_Slip.h" +#define DEBUG_LEVEL 10 +#ifndef DEBUG_LEVEL +# define DEBUG_LEVEL TAO_debug_level +#endif //DEBUG_LEVEL TAO_Notify_ProxyConsumer::TAO_Notify_ProxyConsumer (void) : supplier_admin_ (0) @@ -40,7 +46,7 @@ TAO_Notify_ProxyConsumer::peer (void) void TAO_Notify_ProxyConsumer::init (TAO_Notify_SupplierAdmin* supplier_admin ACE_ENV_ARG_DECL) { - TAO_NOTIFY::Topology_Object::init (supplier_admin); + TAO_Notify::Topology_Object::init (supplier_admin); this->supplier_admin_ = supplier_admin; @@ -110,6 +116,46 @@ TAO_Notify_ProxyConsumer::connect (TAO_Notify_Supplier *supplier ACE_ENV_ARG_DEC // Increment the global supplier count ++supplier_count; } +void +TAO_Notify_ProxyConsumer::push_i (TAO_Notify_Event * event ACE_ENV_ARG_DECL) +{ + if (this->supports_reliable_events ()) + { + TAO_Notify_Event_var pevent; + event->queueable_copy (pevent ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + TAO_Notify::Routing_Slip_Ptr routing_slip = + TAO_Notify::Routing_Slip::create (pevent ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + if (DEBUG_LEVEL > 0) + ACE_DEBUG((LM_DEBUG, ACE_TEXT ("ProxyConsumer routing event.\n"))); + routing_slip->route (this, true ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + routing_slip->wait_persist (); + } + else + { + TAO_Notify_Method_Request_Lookup_No_Copy request (event, this); + this->worker_task ()->execute (request ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } +} + +bool +TAO_Notify_ProxyConsumer::supports_reliable_events () const +{ + bool reliable = false; + CosNotification::PropertyValue value; + if (this->find_qos_property_value (CosNotification::EventReliability, value)) + { + CORBA::Long setting; + if (value >>= setting) + { + reliable = (setting == CosNotification::Persistent); + } + } + return reliable; +} void TAO_Notify_ProxyConsumer::disconnect (ACE_ENV_SINGLE_ARG_DECL) diff --git a/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.h b/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.h index 349c9c7b150..797fc246e44 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.h +++ b/TAO/orbsvcs/orbsvcs/Notify/ProxyConsumer.h @@ -79,6 +79,13 @@ public: TAO_Notify_SupplierAdmin* supplier_admin (void); protected: + /// Accept an event from the Supplier + void push_i (TAO_Notify_Event * event ACE_ENV_ARG_DECL); + + /// Is this part of a reliable channel + bool supports_reliable_events () const; + +protected: ///= Data Members. /// The SA parent. TAO_Notify_SupplierAdmin* supplier_admin_; diff --git a/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp index cd946a669c0..90b25182bad 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp @@ -31,7 +31,7 @@ TAO_Notify_ProxySupplier::~TAO_Notify_ProxySupplier () void TAO_Notify_ProxySupplier::init (TAO_Notify_ConsumerAdmin* consumer_admin ACE_ENV_ARG_DECL) { - TAO_NOTIFY::Topology_Object::init (consumer_admin); + TAO_Notify::Topology_Object::init (consumer_admin); this->consumer_admin_ = consumer_admin; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Random_File.cpp b/TAO/orbsvcs/orbsvcs/Notify/Random_File.cpp index 59bafa52b52..3542a10690d 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Random_File.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Random_File.cpp @@ -5,11 +5,9 @@ #include "ace/OS.h" #include <tao/debug.h> //#define DEBUG_LEVEL 9 // uncomment to force debug messages -#ifndef DEBUG_LEVEL -# define DEBUG_LEVEL TAO_debug_level -#endif //DEBUG_LEVEL +#define DEBUG_LEVEL TAO_debug_level // coment to force debug messages -namespace TAO_NOTIFY +namespace TAO_Notify { Random_File::Random_File() @@ -153,7 +151,7 @@ Random_File::sync() return result; } -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) diff --git a/TAO/orbsvcs/orbsvcs/Notify/Random_File.h b/TAO/orbsvcs/orbsvcs/Notify/Random_File.h index 4c8b550124d..833d5274114 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Random_File.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Random_File.h @@ -27,7 +27,7 @@ #include "ace/streams.h" #include "ace/Synch_T.h" -namespace TAO_NOTIFY +namespace TAO_Notify { /** @@ -83,7 +83,7 @@ private: ACE_SYNCH_MUTEX lock_; }; -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ #include /**/ "ace/post.h" #endif /* RANDOM_FILE_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Reconnect_Worker_T.cpp b/TAO/orbsvcs/orbsvcs/Notify/Reconnect_Worker_T.cpp index 09c3a50414c..6557823e111 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Reconnect_Worker_T.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Reconnect_Worker_T.cpp @@ -19,7 +19,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { template<class TOPOOBJ> Reconnect_Worker<TOPOOBJ>::Reconnect_Worker() @@ -34,6 +34,6 @@ namespace TAO_NOTIFY o->reconnect (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; } -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #endif /* RECONNECT_WORKER_CPP */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Reconnect_Worker_T.h b/TAO/orbsvcs/orbsvcs/Notify/Reconnect_Worker_T.h index 0a664b61144..8190037e3bd 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Reconnect_Worker_T.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Reconnect_Worker_T.h @@ -20,7 +20,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { /** * \brief Iterate through children reconnecting after reloading persistent information. @@ -35,7 +35,7 @@ namespace TAO_NOTIFY // override virtual ESF_Worker method virtual void work (TOPOOBJ* o ACE_ENV_ARG_DECL); }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) #include "Reconnect_Worker_T.cpp" diff --git a/TAO/orbsvcs/orbsvcs/Notify/Reconnection_Registry.cpp b/TAO/orbsvcs/orbsvcs/Notify/Reconnection_Registry.cpp index 047acc906c0..a074eca09c8 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Reconnection_Registry.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Reconnection_Registry.cpp @@ -17,7 +17,7 @@ #include "Properties.h" #include "Topology_Saver.h" #include <ace/Vector_T.h> -namespace TAO_NOTIFY +namespace TAO_Notify { Reconnection_Registry::Reconnection_Registry (Topology_Parent & parent) : highest_id_(0) @@ -242,7 +242,7 @@ namespace TAO_NOTIFY } -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) diff --git a/TAO/orbsvcs/orbsvcs/Notify/Reconnection_Registry.h b/TAO/orbsvcs/orbsvcs/Notify/Reconnection_Registry.h index f077a3c1695..8571acc47db 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Reconnection_Registry.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Reconnection_Registry.h @@ -24,7 +24,7 @@ #include "ace/Hash_Map_Manager_T.h" #include "ace/Null_Mutex.h" -namespace TAO_NOTIFY +namespace TAO_Notify { static const char REGISTRY_TYPE[] = "reconnect_registry"; static const char RECONNECT_ID[] = "ReconnectId"; @@ -90,7 +90,7 @@ namespace TAO_NOTIFY Reconnection_Registry_Type reconnection_registry_; ::NotifyExt::ReconnectionRegistry::ReconnectionID highest_id_; }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #if defined (__ACE_INLINE__) #include "Reconnection_Registry.inl" diff --git a/TAO/orbsvcs/orbsvcs/Notify/Refcountable_Guard_T.inl b/TAO/orbsvcs/orbsvcs/Notify/Refcountable_Guard_T.inl index 21f9b81ce7d..e8a6d882dda 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Refcountable_Guard_T.inl +++ b/TAO/orbsvcs/orbsvcs/Notify/Refcountable_Guard_T.inl @@ -1,5 +1,7 @@ // $Id$ +#include "ace/Log_Msg.h" + template <class T> ACE_INLINE TAO_Notify_Refcountable_Guard_T<T>::TAO_Notify_Refcountable_Guard_T (T *t) : t_ (t) @@ -56,7 +58,9 @@ TAO_Notify_Refcountable_Guard_T<T>::operator = ( const TAO_Notify_Refcountable_Guard_T<T> & rhs) { // note exception safe assignment. see Sutter's "Exceptional C++" - swap (TAO_Notify_Refcountable_Guard_T<T> (rhs.t_)); + // note it's worth the following optimization to avoid threadsafe increment/decrement refcounters + if (this->t_ != rhs.t_) + swap (TAO_Notify_Refcountable_Guard_T<T> (rhs.t_)); return *this; } @@ -67,5 +71,5 @@ TAO_Notify_Refcountable_Guard_T<T>::swap (TAO_Notify_Refcountable_Guard_T & rhs) { T* pt = rhs.t_; rhs.t_ = this->t_; - this->t_ = rhs.t_; + this->t_ = pt; } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.cpp b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.cpp index 5f6fb42e9a0..d64e96d8ecf 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.cpp @@ -7,8 +7,6 @@ #endif /* __ACE_INLINE__ */ #include "Delivery_Request.h" -#include "Delivery_Method_Lookup.h" -#include "Delivery_Method_Dispatch.h" #include "Worker_Task.h" #include "ProxyConsumer.h" #include "ProxySupplier.h" @@ -17,15 +15,15 @@ #include "Routing_Slip_Queue.h" #include "tao/debug.h" #include "ace/Dynamic_Service.h" +#include "Method_Request_Lookup.h" +#include "Method_Request_Dispatch.h" //#define DEBUG_LEVEL 9 -#ifndef DEBUG_LEVEL -# define DEBUG_LEVEL TAO_debug_level -#endif //DEBUG_LEVEL +#define DEBUG_LEVEL TAO_debug_level #define QUEUE_ALLOWED 1 -namespace TAO_NOTIFY +namespace TAO_Notify { /////////////////////// // Routing_Slip Statics @@ -52,14 +50,16 @@ size_t Routing_Slip::count_enter_deleting_ = 0; size_t Routing_Slip::count_enter_terminal_ = 0; Routing_Slip_Ptr -Routing_Slip::create ( - const TAO_Notify_Event_Ptr& event) +Routing_Slip::create (const TAO_Notify_Event_var& event ACE_ENV_ARG_DECL) { - Routing_Slip_Ptr result(new Routing_Slip (event)); + Routing_Slip * prs; + ACE_NEW_THROW_EX (prs, Routing_Slip (event), CORBA::NO_MEMORY ()); + ACE_CHECK_RETURN (Routing_Slip_Ptr()); + Routing_Slip_Ptr result(prs); result->this_ptr_ = result; // let the pointers touch so they use the same ref count // note we don't care about ultra-precise stats, so no guard for these - if (DEBUG_LEVEL > 1 && ((result->sequence_ % 100) == 0)) + if (DEBUG_LEVEL > 8 && ((result->sequence_ % 100) == 0)) { ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%P|%t) Routing_Slip_Statistics\n") @@ -109,33 +109,44 @@ Routing_Slip::create ( Routing_Slip_Ptr result; ACE_Message_Block * event_mb = 0; ACE_Message_Block * rs_mb = 0; - if (rspm->reload (event_mb, rs_mb)) - { - TAO_InputCDR cdr_event (event_mb); - TAO_Notify_Event_Ptr event (TAO_Notify_Event::unmarshal (cdr_event)); - if (event != 0) + ACE_TRY_NEW_ENV { - result = create (event); - TAO_InputCDR cdr_rs (rs_mb); - if ( result->unmarshal (ecf, cdr_rs)) - { - result->set_rspm (rspm); - } - else + if (rspm->reload (event_mb, rs_mb)) { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("(%P|%t) Routing_Slip::create: Unmarshalling failed for routing slip.\n") - )); - result.reset (); + TAO_InputCDR cdr_event (event_mb); + TAO_Notify_Event_Copy_var event (TAO_Notify_Event::unmarshal (cdr_event)); + if (event.get () != 0) + { + result = create (event ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + TAO_InputCDR cdr_rs (rs_mb); + if ( result->unmarshal (ecf, cdr_rs)) + { + result->set_rspm (rspm); + } + else + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) Routing_Slip::create: Unmarshalling failed for routing slip.\n") + )); + result.reset (); + } + } + else + { + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("(%P|%t) Routing_Slip::create: Unmarshalling failed for event.\n") + )); + } } } - else + ACE_CATCHANY { ACE_ERROR ((LM_ERROR, - ACE_TEXT ("(%P|%t) Routing_Slip::create: Unmarshalling failed for event.\n") + ACE_TEXT ("(%P|%t) Routing_Slip::create: Exception reloading event.\n") )); } - } + ACE_ENDTRY; delete event_mb; delete rs_mb; @@ -153,7 +164,7 @@ Routing_Slip::set_rspm (Routing_Slip_Persistence_Manager * rspm) } Routing_Slip::Routing_Slip( - const TAO_Notify_Event_Ptr& event) + const TAO_Notify_Event_var& event) : is_safe_ (false) , until_safe_ (internals_) , this_ptr_ (0) @@ -184,7 +195,7 @@ Routing_Slip::create_persistence_manager() if (this->rspm_ == 0) { Event_Persistence_Strategy * strategy = - ACE_Dynamic_Service <TAO_NOTIFY::Event_Persistence_Strategy>::instance ("Event_Persistence"); + ACE_Dynamic_Service <TAO_Notify::Event_Persistence_Strategy>::instance ("Event_Persistence"); if (strategy != 0) { Event_Persistence_Factory * factory = strategy->get_factory (); @@ -197,7 +208,7 @@ Routing_Slip::create_persistence_manager() return this->rspm_ != 0; } -const TAO_Notify_Event_Ptr & +const TAO_Notify_Event_var & Routing_Slip::event () const { return this->event_; @@ -214,11 +225,11 @@ Routing_Slip::wait_persist () } void -Routing_Slip::route (TAO_Notify_ProxyConsumer* pc, bool reliable_channel) +Routing_Slip::route (TAO_Notify_ProxyConsumer* pc, bool reliable_channel ACE_ENV_ARG_DECL) { ACE_ASSERT(pc != 0); - TAO_Notify_Refcountable_Guard pcgrd(*pc); + TAO_Notify_Refcountable_Guard_T<TAO_Notify_ProxyConsumer> pcgrd(pc); Routing_Slip_Guard guard (this->internals_); @@ -234,7 +245,7 @@ Routing_Slip::route (TAO_Notify_ProxyConsumer* pc, bool reliable_channel) Delivery_Request_Ptr request (new Delivery_Request (this->this_ptr_, request_id)); this->delivery_requests_.push_back (request); - Delivery_Method_Lookup method (request, pc); + TAO_Notify_Method_Request_Lookup_Queueable method (request, pc); if (this->state_ == rssCREATING) { @@ -242,7 +253,7 @@ Routing_Slip::route (TAO_Notify_ProxyConsumer* pc, bool reliable_channel) { enter_state_transient (guard); } - else if (ACE_Dynamic_Service <TAO_NOTIFY::Event_Persistence_Strategy>::instance ("Event_Persistence") == 0) + else if (ACE_Dynamic_Service <TAO_Notify::Event_Persistence_Strategy>::instance ("Event_Persistence") == 0) { enter_state_transient (guard); } @@ -260,16 +271,69 @@ Routing_Slip::route (TAO_Notify_ProxyConsumer* pc, bool reliable_channel) } } guard.release (); - pc->worker_task()->exec (method); + pc->worker_task()->execute (method ACE_ENV_ARG_PARAMETER); +} +#if 0 // forward +void +Routing_Slip::forward (TAO_Notify_ProxySupplier* ps, bool filter) +{ + // must be the first action + ACE_ASSERT (this->state_ == rssCREATING); + + TAO_Notify_Refcountable_Guard_T<TAO_Notify_ProxySupplier> psgrd(ps); + Routing_Slip_Guard guard (this->internals_); + + enter_state_transient (guard); + size_t request_id = delivery_requests_.size (); + + if (DEBUG_LEVEL > 8) ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("(%P|%t) Routing Slip #%d: add Delivery_Request #%d: Forward %s; completed %d of %d\n"), + this->sequence_, + ACE_static_cast (int, request_id), + filter ? ACE_TEXT ("Filter") : ACE_TEXT ("No Filter"), + ACE_static_cast (int, this->complete_requests_), + ACE_static_cast (int, this->delivery_requests_.size ()) + )); + + Delivery_Request_Ptr request (new Delivery_Request (this->this_ptr_, request_id)); + if (! ps->has_shutdown() ) + { + this->delivery_requests_.push_back (request); +// Delivery_Method_Dispatch method (request, ps, filter); + TAO_Notify_Method_Request_Dispatch_No_Copy method (request, ps, filter); + guard.release (); + if (DEBUG_LEVEL > 8) + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) Routing Slip #%d: dispatching Delivery_Request %d to " + "proxy supplier %d\n", + this->sequence_, + ACE_static_cast (int, request_id), + ps->id())); + ps->worker_task()->execute (method); + } + else + { + if (DEBUG_LEVEL > 5) + ACE_DEBUG ((LM_DEBUG, + "(%P|%t) Routing Slip #%d: not dispatching Delivery_Request %d to " + "proxy supplier %d; already shut down\n", + this->sequence_, + ACE_static_cast (int, request_id), + ps->id())); + } } +#endif // forward void -Routing_Slip::dispatch (TAO_Notify_ProxySupplier* ps, bool filter) +Routing_Slip::dispatch ( + TAO_Notify_ProxySupplier* ps, + bool filter + ACE_ENV_ARG_DECL) { // cannot be the first action ACE_ASSERT (this->state_ != rssCREATING); - TAO_Notify_Refcountable_Guard psgrd(*ps); //@@todo : Need to guard anything else? + TAO_Notify_Refcountable_Guard_T<TAO_Notify_ProxySupplier> psgrd(ps); Routing_Slip_Guard guard (this->internals_); size_t request_id = delivery_requests_.size (); @@ -287,7 +351,7 @@ Routing_Slip::dispatch (TAO_Notify_ProxySupplier* ps, bool filter) if (! ps->has_shutdown() ) { this->delivery_requests_.push_back (request); - Delivery_Method_Dispatch method (request, ps, filter); + TAO_Notify_Method_Request_Dispatch_No_Copy method (request, ps, filter); guard.release (); if (DEBUG_LEVEL > 8) ACE_DEBUG ((LM_DEBUG, @@ -296,7 +360,8 @@ Routing_Slip::dispatch (TAO_Notify_ProxySupplier* ps, bool filter) this->sequence_, ACE_static_cast (int, request_id), ps->id())); - ps->worker_task()->exec (method); + ps->worker_task()->execute (method ACE_ENV_ARG_PARAMETER); + ACE_CHECK; } else { @@ -778,14 +843,21 @@ Routing_Slip::unmarshal (TAO_Notify_EventChannelFactory &ecf, TAO_InputCDR & cdr { ACE_TRY_NEW_ENV { - if (code == Delivery_Method_Dispatch::persistence_code) + if (code == TAO_Notify_Method_Request_Dispatch::persistence_code) { - Delivery_Request_Ptr request(new Delivery_Request(this_ptr_, this->delivery_requests_.size ())); - Delivery_Method * method = Delivery_Method_Dispatch::create ( - request, - ecf, - cdr - ACE_ENV_ARG_PARAMETER); + Delivery_Request * prequest; + ACE_NEW_THROW_EX ( + prequest, + Delivery_Request(this_ptr_, this->delivery_requests_.size ()), + CORBA::NO_MEMORY ()); + ACE_TRY_CHECK; + Delivery_Request_Ptr request(prequest); + TAO_Notify_Method_Request_Dispatch_Queueable * method = + TAO_Notify_Method_Request_Dispatch::unmarshal ( + request, + ecf, + cdr + ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; if (method != 0) { @@ -793,14 +865,15 @@ Routing_Slip::unmarshal (TAO_Notify_EventChannelFactory &ecf, TAO_InputCDR & cdr this->delivery_methods_.push_back (method); } } - else if (code == Delivery_Method_Lookup::persistence_code) + else if (code == TAO_Notify_Method_Request_Lookup::persistence_code) { Delivery_Request_Ptr request(new Delivery_Request(this_ptr_, this->delivery_requests_.size ())); - Delivery_Method * method = Delivery_Method_Lookup::create ( - request, - ecf, - cdr - ACE_ENV_ARG_PARAMETER); + TAO_Notify_Method_Request_Lookup_Queueable * method = + TAO_Notify_Method_Request_Lookup::unmarshal ( + request, + ecf, + cdr + ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK if (method != 0) { @@ -830,7 +903,7 @@ Routing_Slip::reconnect (ACE_ENV_SINGLE_ARG_DECL) size_t count = this->delivery_methods_.size (); for (size_t nmethod = 0; nmethod < count; ++nmethod) { - this->delivery_methods_[nmethod] ->execute (TAO_Notify_Method_Request_Queueable::EXECUTE ACE_ENV_ARG_PARAMETER); + this->delivery_methods_[nmethod]->execute (ACE_ENV_SINGLE_ARG_PARAMETER); } this->delivery_methods_.clear (); } @@ -854,27 +927,27 @@ Routing_Slip::should_retry () const } // namespace #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Auto_Basic_Ptr<TAO_NOTIFY::Routing_Slip>; -template class ACE_Strong_Bound_Ptr<TAO_NOTIFY::Routing_Slip, TAO_SYNCH_MUTEX>; -template class ACE_Auto_Basic_Ptr<TAO_NOTIFY::Delivery_Request>; -template class ACE_Strong_Bound_Ptr<TAO_NOTIFY::Delivery_Request,TAO_SYNCH_MUTEX>; -template class ACE_Vector <TAO_NOTIFY::Delivery_Request_Ptr>; -template class ACE_Array_Base<ACE_Strong_Bound_Ptr<TAO_NOTIFY::Delivery_Request,TAO_SYNCH_MUTEX> >; -template class ACE_Vector <TAO_NOTIFY::Delivery_Request *>; -template class ACE_Array_Base<TAO_NOTIFY::Delivery_Request *>; -template class ACE_Dynamic_Service <TAO_NOTIFY::Event_Persistence_Strategy>; -template class ACE_Array_Base<TAO_NOTIFY::Delivery_Method*>; -template class ACE_Vector<TAO_NOTIFY::Delivery_Method*>; +template class ACE_Auto_Basic_Ptr<TAO_Notify::Routing_Slip>; +template class ACE_Strong_Bound_Ptr<TAO_Notify::Routing_Slip, TAO_SYNCH_MUTEX>; +template class ACE_Auto_Basic_Ptr<TAO_Notify::Delivery_Request>; +template class ACE_Strong_Bound_Ptr<TAO_Notify::Delivery_Request,TAO_SYNCH_MUTEX>; +template class ACE_Vector <TAO_Notify::Delivery_Request_Ptr>; +template class ACE_Array_Base<ACE_Strong_Bound_Ptr<TAO_Notify::Delivery_Request,TAO_SYNCH_MUTEX> >; +template class ACE_Vector <TAO_Notify::Delivery_Request *>; +template class ACE_Array_Base<TAO_Notify::Delivery_Request *>; +template class ACE_Dynamic_Service <TAO_Notify::Event_Persistence_Strategy>; +template class ACE_Array_Base<TAO_Notify_Method_Request_Dispatch_No_Copy*>; +template class ACE_Vector<TAO_Notify_Method_Request_Dispatch_No_Copy*>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Auto_Basic_Ptr<TAO_NOTIFY::Routing_Slip> -#pragma instantiate ACE_Strong_Bound_Ptr<TAO_NOTIFY::Routing_Slip,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Auto_Basic_Ptr<TAO_NOTIFY::Delivery_Request> -#pragma instantiate ACE_Strong_Bound_Ptr<TAO_NOTIFY::Delivery_Request,TAO_SYNCH_MUTEX> -#pragma instantiate ACE_Vector <TAO_NOTIFY::Delivery_Request_Ptr> -#pragma instantiate ACE_Array_Base<ACE_Strong_Bound_Ptr<TAO_NOTIFY::Delivery_Request,TAO_SYNCH_MUTEX> > -#pragma instantiate ACE_Vector <TAO_NOTIFY::Delivery_Request *> -#pragma instantiate ACE_Array_Base<TAO_NOTIFY::Delivery_Request *> -#pragma instantiate ACE_Dynamic_Service <TAO_NOTIFY::Event_Persistence_Strategy> -#pragma instantiate ACE_Array_Base<TAO_NOTIFY::Delivery_Method*> -#pragma instantiate ACE_Vector<TAO_NOTIFY::Delivery_Method*> +#pragma instantiate ACE_Auto_Basic_Ptr<TAO_Notify::Routing_Slip> +#pragma instantiate ACE_Strong_Bound_Ptr<TAO_Notify::Routing_Slip,TAO_SYNCH_MUTEX> +#pragma instantiate ACE_Auto_Basic_Ptr<TAO_Notify::Delivery_Request> +#pragma instantiate ACE_Strong_Bound_Ptr<TAO_Notify::Delivery_Request,TAO_SYNCH_MUTEX> +#pragma instantiate ACE_Vector <TAO_Notify::Delivery_Request_Ptr> +#pragma instantiate ACE_Array_Base<ACE_Strong_Bound_Ptr<TAO_Notify::Delivery_Request,TAO_SYNCH_MUTEX> > +#pragma instantiate ACE_Vector <TAO_Notify::Delivery_Request *> +#pragma instantiate ACE_Array_Base<TAO_Notify::Delivery_Request *> +#pragma instantiate ACE_Dynamic_Service <TAO_Notify::Event_Persistence_Strategy> +#pragma instantiate ACE_Array_Base<TAO_Notify_Method_Request_Dispatch_No_Copy*> +#pragma instantiate ACE_Vector<TAO_Notify_Method_Request_Dispatch_No_Copy*> #endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.h b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.h index 5c8d4f370e3..9e57fde894a 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.h @@ -13,9 +13,8 @@ #define TAO_NOTIFY_ROUTING_SLIP_H #include "ace/pre.h" -#include "notify_export.h" +#include "notify_serv_export.h" #include "Event.h" -#include "Types.h" #include "Delivery_Request.h" #include "Event_Persistence_Factory.h" @@ -31,22 +30,24 @@ // Forward declarations of classes/pointers/collections // referenced from this header class TAO_Notify_EventChannelFactory; +class TAO_Notify_Method_Request; +class TAO_Notify_ProxyConsumer; +class TAO_Notify_ProxySupplier; class TAO_Notify_Method_Request_Queueable; -namespace TAO_NOTIFY +namespace TAO_Notify { -class TAO_Notify_Export Routing_Slip_Persistence_Manager; +class TAO_Notify_Serv_Export Routing_Slip_Persistence_Manager; -// Forward declarations of TAO_NOTIFY classes/pointers/collections +// Forward declarations of TAO_Notify classes/pointers/collections // referenced from this header /// A vector of Delivery Requests. The body of a Routing_Slip. typedef ACE_Vector <Delivery_Request_Ptr> Delivery_Request_Vec; -class Delivery_Method; -/// A vector of Delivery_Methods. Used during recovery. -typedef ACE_Vector <Delivery_Method *> Delivery_Method_Vec; +/// A vector of Methods_. Used during recovery. +typedef ACE_Vector <TAO_Notify_Method_Request_Queueable *> Delivery_Method_Vec; class Routing_Slip; /// A reference-counted smart pointer to a Routing_Slip @@ -61,12 +62,13 @@ class Routing_Slip_Queue; * * Interacts with persistent storage to provide reliable delivery. */ -class TAO_Notify_Export Routing_Slip : public Persistent_Callback +class TAO_Notify_Serv_Export Routing_Slip : public Persistent_Callback { typedef ACE_Guard< TAO_SYNCH_MUTEX > Routing_Slip_Guard; public: /// "Factory" method for normal use. - static Routing_Slip_Ptr create (const TAO_Notify_Event_Ptr& event); + static Routing_Slip_Ptr create (const TAO_Notify_Event_var& event + ACE_ENV_ARG_DECL); /// "Factory" method for use during reload from persistent storage. static Routing_Slip_Ptr create ( @@ -86,13 +88,20 @@ public: /// Route this event to destinations /// must be the Action request after /// the routing slip is created. - void route (TAO_Notify_ProxyConsumer* pc, bool reliable_channel); + void route (TAO_Notify_ProxyConsumer* pc, bool reliable_channel ACE_ENV_ARG_DECL); /// \brief Schedule delivery to a consumer via a proxy supplier /// \param proxy_supplier the proxy supplier that will deliver the event /// \param filter should consumer-based filtering be applied? - /// \param a task to use for this work. - void dispatch (TAO_Notify_ProxySupplier * proxy_supplier, bool filter); + void dispatch (TAO_Notify_ProxySupplier * proxy_supplier, bool filter ACE_ENV_ARG_DECL); + + +#if 0 + /// \brief Forward delivery to a consumer via a proxy supplier + /// \param proxy_supplier the proxy supplier that will deliver the event + /// \param filter should consumer-based filtering be applied? + void forward (TAO_Notify_ProxySupplier* ps, bool filter); +#endif ///////////////////////////////////////// /// \brief Wait until the event/routing_slip has @@ -113,7 +122,7 @@ public: ///////////////////////////////////////////////////// // \brief Access the event associated with this routing slip - const TAO_Notify_Event_Ptr & event () const; + const TAO_Notify_Event_var & event () const; /// \brief Provide an identifying number for this Routing Slip /// to use in debug messages. @@ -146,7 +155,7 @@ private: bool create_persistence_manager(); /// Private constructor for use by create method - Routing_Slip(const TAO_Notify_Event_Ptr& event); + Routing_Slip(const TAO_Notify_Event_var& event); /// Test to see if all deliveries are complete. bool all_deliveries_complete () const; @@ -174,7 +183,7 @@ private: Routing_Slip_Ptr this_ptr_; // The event being delivered. - TAO_Notify_Event_Ptr event_; + TAO_Notify_Event_var event_; /// A mini-state machine to control persistence /// See external doc for circles and arrows. diff --git a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.inl b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.inl index 87df7c644fd..191a12b479b 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.inl +++ b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip.inl @@ -1,9 +1,9 @@ /* -*- C++ -*- */ // $Id$ -namespace TAO_NOTIFY +namespace TAO_Notify { // this is a placeholder for code that will be moved here RSN. -} // namespace TAO_NOTIFY +} // namespace TAO_Notify diff --git a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Persistence_Manager.cpp b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Persistence_Manager.cpp index dfb67f4f7ec..b7240fd5d2f 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Persistence_Manager.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Persistence_Manager.cpp @@ -4,7 +4,7 @@ #include "Standard_Event_Persistence.h" #include "Persistent_File_Allocator.h" -namespace TAO_NOTIFY +namespace TAO_Notify { Routing_Slip_Persistence_Manager::Routing_Slip_Persistence_Manager( @@ -792,7 +792,7 @@ Routing_Slip_Persistence_Manager::remove_from_dllist() this->next_manager_ = this; } -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) //template class ACE_Node<size_t>; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Persistence_Manager.h b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Persistence_Manager.h index e65cafb7640..09d84d03f15 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Persistence_Manager.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Persistence_Manager.h @@ -28,7 +28,7 @@ #include "ace/Synch_T.h" #include "ace/Containers_T.h" -namespace TAO_NOTIFY +namespace TAO_Notify { // Some forward declarations. class Standard_Event_Persistence_Factory; @@ -255,7 +255,7 @@ private: ACE_Message_Block * routing_slip_mb_; }; -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ #include /**/ "ace/post.h" #endif /* ROUTING_SLIP_PERSISTENCE_MANAGER_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.cpp b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.cpp index b37d48a2646..93cde74a63e 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.cpp @@ -10,11 +10,9 @@ #include "ace/Dynamic_Service.h" //#define DEBUG_LEVEL 9 -#ifndef DEBUG_LEVEL -# define DEBUG_LEVEL TAO_debug_level -#endif //DEBUG_LEVEL +#define DEBUG_LEVEL TAO_debug_level -namespace TAO_NOTIFY +namespace TAO_Notify { Routing_Slip_Queue::Routing_Slip_Queue (size_t allowed) : allowed_ (allowed) @@ -111,12 +109,12 @@ namespace TAO_NOTIFY } // namespace #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Node<TAO_NOTIFY::Routing_Slip_Ptr>; -template class ACE_Unbounded_Queue<TAO_NOTIFY::Routing_Slip_Ptr>; -template class ACE_Unbounded_Queue_Iterator<TAO_NOTIFY::Routing_Slip_Ptr>; +template class ACE_Node<TAO_Notify::Routing_Slip_Ptr>; +template class ACE_Unbounded_Queue<TAO_Notify::Routing_Slip_Ptr>; +template class ACE_Unbounded_Queue_Iterator<TAO_Notify::Routing_Slip_Ptr>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Node<TAO_NOTIFY::Routing_Slip_Ptr> -#pragma instantiate ACE_Unbounded_Queue<TAO_NOTIFY::Routing_Slip_Ptr> -#pragma instantiate ACE_Unbounded_Queue_Iterator<TAO_NOTIFY::Routing_Slip_Ptr> +#pragma instantiate ACE_Node<TAO_Notify::Routing_Slip_Ptr> +#pragma instantiate ACE_Unbounded_Queue<TAO_Notify::Routing_Slip_Ptr> +#pragma instantiate ACE_Unbounded_Queue_Iterator<TAO_Notify::Routing_Slip_Ptr> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.h b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.h index 85613c3bf79..553116c5805 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.h @@ -11,7 +11,7 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { /** * \brief A queue of Routing_Slips waiting to be persisted. diff --git a/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.inl b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.inl new file mode 100644 index 00000000000..f500b5e35e4 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Notify/Routing_Slip_Queue.inl @@ -0,0 +1,7 @@ +// $Id$ +namespace TAO_Notify +{ + // code will go here soon + +} // namespace TAO_Notify + diff --git a/TAO/orbsvcs/orbsvcs/Notify/Save_Persist_Worker_T.cpp b/TAO/orbsvcs/orbsvcs/Notify/Save_Persist_Worker_T.cpp index edbb3518baf..a18faf6abe7 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Save_Persist_Worker_T.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Save_Persist_Worker_T.cpp @@ -19,7 +19,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { template<class TOPOOBJ> Save_Persist_Worker<TOPOOBJ>::Save_Persist_Worker( @@ -41,6 +41,6 @@ namespace TAO_NOTIFY ACE_CHECK; } } -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #endif /* SAVE_PERSIST_WORKER_CPP */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/Save_Persist_Worker_T.h b/TAO/orbsvcs/orbsvcs/Notify/Save_Persist_Worker_T.h index adee13f8de4..740b2128378 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Save_Persist_Worker_T.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Save_Persist_Worker_T.h @@ -20,7 +20,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { /** * \brief Iterate through children saving persistent topology information. @@ -43,7 +43,7 @@ namespace TAO_NOTIFY Topology_Saver& saver_; bool want_all_children_; }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) #include "Save_Persist_Worker_T.cpp" diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.cpp index 4db5521cebc..253330c5af1 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.cpp @@ -11,8 +11,6 @@ ACE_RCSID (Notify, TAO_Notify_SequenceProxyPushConsumer, "$Id$") #include "tao/debug.h" #include "SequencePushSupplier.h" #include "../AdminProperties.h" -#include "../Method_Request_Lookup.h" -#include "../Worker_Task.h" #include "../Structured/StructuredEvent.h" #include "../Properties.h" @@ -86,10 +84,8 @@ TAO_Notify_SequenceProxyPushConsumer::push_structured_events (const CosNotificat const CosNotification::StructuredEvent& notification = event_batch[i]; TAO_Notify_StructuredEvent_No_Copy event (notification); - - TAO_Notify_Method_Request_Lookup_No_Copy request (&event, this); - - this->worker_task ()->execute (request ACE_ENV_ARG_PARAMETER); + this->push_i (&event ACE_ENV_ARG_PARAMETER); + ACE_CHECK; } } @@ -111,7 +107,7 @@ TAO_Notify_SequenceProxyPushConsumer::get_proxy_type_name (void) const } void -TAO_Notify_SequenceProxyPushConsumer::load_attrs (const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_SequenceProxyPushConsumer::load_attrs (const TAO_Notify::NVPList& attrs) { SuperClass::load_attrs(attrs); ACE_CString ior; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h index 174b4dd661c..a47e2510576 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h @@ -54,7 +54,7 @@ public: virtual const char * get_proxy_type_name (void) const; - virtual void load_attrs (const TAO_NOTIFY::NVPList& attrs); + virtual void load_attrs (const TAO_Notify::NVPList& attrs); protected: ///= Data Members diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.cpp index b4196fbcc83..1bf551586dc 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.cpp @@ -80,7 +80,7 @@ TAO_Notify_SequenceProxyPushSupplier::get_proxy_type_name (void) const } void -TAO_Notify_SequenceProxyPushSupplier::load_attrs (const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_SequenceProxyPushSupplier::load_attrs (const TAO_Notify::NVPList& attrs) { SuperClass::load_attrs(attrs); ACE_CString ior; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h index 8e8f5f272be..950ee882aa4 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h @@ -61,7 +61,7 @@ public: virtual const char * get_proxy_type_name (void) const; - virtual void load_attrs (const TAO_NOTIFY::NVPList& attrs); + virtual void load_attrs (const TAO_Notify::NVPList& attrs); /// = Servant methods virtual CosNotifyChannelAdmin::ProxyType MyType (ACE_ENV_SINGLE_ARG_DECL) diff --git a/TAO/orbsvcs/orbsvcs/Notify/Standard_Event_Persistence.cpp b/TAO/orbsvcs/orbsvcs/Notify/Standard_Event_Persistence.cpp index ca3c47faaa9..0494a409311 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Standard_Event_Persistence.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Standard_Event_Persistence.cpp @@ -6,7 +6,7 @@ #include "ace/Dynamic_Service.h" #include "ace/OS_NS_strings.h" -namespace TAO_NOTIFY +namespace TAO_Notify { Standard_Event_Persistence::Standard_Event_Persistence () diff --git a/TAO/orbsvcs/orbsvcs/Notify/Standard_Event_Persistence.h b/TAO/orbsvcs/orbsvcs/Notify/Standard_Event_Persistence.h index fe8bb7cddf2..ae450d415da 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Standard_Event_Persistence.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Standard_Event_Persistence.h @@ -27,100 +27,100 @@ #include "Routing_Slip_Persistence_Manager.h" #include <ace/SString.h> -namespace TAO_NOTIFY +namespace TAO_Notify { -static const ACE_UINT32 ROUTING_SLIP_ROOT_BLOCK_NUMBER = 0; -static const ACE_UINT64 ROUTING_SLIP_ROOT_SERIAL_NUMBER = 1; - -/// \brief Standard (i.e. default) implementation of Event_Persistence_Factory interface -class TAO_Notify_Serv_Export Standard_Event_Persistence_Factory : - public Event_Persistence_Factory -{ -public: - /// Constructor - Standard_Event_Persistence_Factory (); - /// Destructor - virtual ~Standard_Event_Persistence_Factory(); - - /// Open persistence file and initialize. - /// /param filename the fully qualified path/name of the file to contain - /// persistent information. - /// /param block_size the size of a physical block on the device containing - /// the file. - bool open (const char * filename, ACE_UINT32 block_size = 512); - - ////////////////////////////////////////////////////// - // Implement Event_Persistence_Factory virtual methods. - virtual Routing_Slip_Persistence_Manager* - create_routing_slip_persistence_manager(Persistent_Callback* callback); - - virtual Routing_Slip_Persistence_Manager * first_reload_manager(); - - /// reloading process complete. Where should the chain continue? - void done_reloading( - Persistent_Storage_Block * next_psb, - ACE_UINT64 current_serial_number); - - /// return current serial # and a psb containing current record# - /// allocate new serial # and record number, and return those, too. - void preallocate_next_record( - ACE_UINT64& current_serial_number, - Persistent_Storage_Block*& current_psb, - ACE_UINT64& next_serial_number, - ACE_UINT32& next_block_number); - - // return block pointer info for the - void get_preallocated_pointer( - ACE_UINT64& next_serial_number, - ACE_UINT32& next_block_number); - - /// Accessor for file allocator. - /// Intended for use only by the Routing Slip Persistence Manager - Persistent_File_Allocator* allocator(); - - /// Access root record. - /// Intended for use only by the Routing Slip Persistence Manager - Routing_Slip_Persistence_Manager & root(); - -public: - ACE_SYNCH_MUTEX lock; - -private: - Persistent_File_Allocator allocator_; - Routing_Slip_Persistence_Manager root_; - Persistent_Storage_Block* psb_; - ACE_UINT64 serial_number_; - bool is_reloading_; -}; - -/// \brief The standard implementation of the -/// Event_Persistence_Strategy interface. -class TAO_Notify_Serv_Export Standard_Event_Persistence : - public Event_Persistence_Strategy -{ -public : - /// Constructor. - Standard_Event_Persistence (); - /// Destructor. - virtual ~Standard_Event_Persistence (); - ///////////////////////////////////////////// - // Override Event_Persistent_Strategy methods - // Parse arguments and initialize. - virtual int init(int argc, ACE_TCHAR *argv[]); - // Prepare for shutdown - virtual int fini (); - - // get the current factory, creating it if necessary - virtual Event_Persistence_Factory * get_factory (); - - // release the current factory so a new one can be created - virtual void reset (); - -private: - ACE_CString filename_; // set via -file_path - ACE_UINT32 block_size_; // set via -block_size - Standard_Event_Persistence_Factory * factory_; -}; + static const ACE_UINT32 ROUTING_SLIP_ROOT_BLOCK_NUMBER = 0; + static const ACE_UINT64 ROUTING_SLIP_ROOT_SERIAL_NUMBER = 1; + + /// \brief Standard (i.e. default) implementation of Event_Persistence_Factory interface + class TAO_Notify_Serv_Export Standard_Event_Persistence_Factory : + public Event_Persistence_Factory + { + public: + /// Constructor + Standard_Event_Persistence_Factory (); + /// Destructor + virtual ~Standard_Event_Persistence_Factory(); + + /// Open persistence file and initialize. + /// /param filename the fully qualified path/name of the file to contain + /// persistent information. + /// /param block_size the size of a physical block on the device containing + /// the file. + bool open (const char * filename, ACE_UINT32 block_size = 512); + + ////////////////////////////////////////////////////// + // Implement Event_Persistence_Factory virtual methods. + virtual Routing_Slip_Persistence_Manager* + create_routing_slip_persistence_manager(Persistent_Callback* callback); + + virtual Routing_Slip_Persistence_Manager * first_reload_manager(); + + /// reloading process complete. Where should the chain continue? + void done_reloading( + Persistent_Storage_Block * next_psb, + ACE_UINT64 current_serial_number); + + /// return current serial # and a psb containing current record# + /// allocate new serial # and record number, and return those, too. + void preallocate_next_record( + ACE_UINT64& current_serial_number, + Persistent_Storage_Block*& current_psb, + ACE_UINT64& next_serial_number, + ACE_UINT32& next_block_number); + + // return block pointer info for the + void get_preallocated_pointer( + ACE_UINT64& next_serial_number, + ACE_UINT32& next_block_number); + + /// Accessor for file allocator. + /// Intended for use only by the Routing Slip Persistence Manager + Persistent_File_Allocator* allocator(); + + /// Access root record. + /// Intended for use only by the Routing Slip Persistence Manager + Routing_Slip_Persistence_Manager & root(); + + public: + ACE_SYNCH_MUTEX lock; + + private: + Persistent_File_Allocator allocator_; + Routing_Slip_Persistence_Manager root_; + Persistent_Storage_Block* psb_; + ACE_UINT64 serial_number_; + bool is_reloading_; + }; + + /// \brief The standard implementation of the + /// Event_Persistence_Strategy interface. + class TAO_Notify_Serv_Export Standard_Event_Persistence : + public Event_Persistence_Strategy + { + public : + /// Constructor. + Standard_Event_Persistence (); + /// Destructor. + virtual ~Standard_Event_Persistence (); + ///////////////////////////////////////////// + // Override Event_Persistent_Strategy methods + // Parse arguments and initialize. + virtual int init(int argc, ACE_TCHAR *argv[]); + // Prepare for shutdown + virtual int fini (); + + // get the current factory, creating it if necessary + virtual Event_Persistence_Factory * get_factory (); + + // release the current factory so a new one can be created + virtual void reset (); + + private: + ACE_CString filename_; // set via -file_path + ACE_UINT32 block_size_; // set via -block_size + Standard_Event_Persistence_Factory * factory_; + }; } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushConsumer.cpp b/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushConsumer.cpp index 7192f0a47b5..7966c3c2e3f 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushConsumer.cpp @@ -14,8 +14,7 @@ ACE_RCSID(RT_Notify, TAO_Notify_StructuredProxyPushConsumer, "$Id$") #include "StructuredPushSupplier.h" #include "StructuredEvent.h" #include "../AdminProperties.h" -#include "../Method_Request_Lookup.h" -#include "../Worker_Task.h" +#include "../Properties.h" TAO_Notify_StructuredProxyPushConsumer::TAO_Notify_StructuredProxyPushConsumer (void) { @@ -82,10 +81,7 @@ TAO_Notify_StructuredProxyPushConsumer::push_structured_event (const CosNotifica } TAO_Notify_StructuredEvent_No_Copy event (notification); - - TAO_Notify_Method_Request_Lookup_No_Copy request (&event, this); - - this->worker_task ()->execute (request ACE_ENV_ARG_PARAMETER); + this->push_i (&event ACE_ENV_ARG_PARAMETER); } void @@ -106,7 +102,7 @@ TAO_Notify_StructuredProxyPushConsumer::get_proxy_type_name (void) const } void -TAO_Notify_StructuredProxyPushConsumer::load_attrs (const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_StructuredProxyPushConsumer::load_attrs (const TAO_Notify::NVPList& attrs) { SuperClass::load_attrs(attrs); ACE_CString ior; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushConsumer.h b/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushConsumer.h index 7144e700e36..35fc44fe559 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushConsumer.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushConsumer.h @@ -53,7 +53,7 @@ public: /// Release virtual void release (void); - virtual void load_attrs (const TAO_NOTIFY::NVPList& attrs); + virtual void load_attrs (const TAO_Notify::NVPList& attrs); protected: diff --git a/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushSupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushSupplier.cpp index 553a72498f0..fac13c9cdf1 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushSupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushSupplier.cpp @@ -83,7 +83,7 @@ TAO_Notify_StructuredProxyPushSupplier::get_proxy_type_name (void) const } void -TAO_Notify_StructuredProxyPushSupplier::load_attrs (const TAO_NOTIFY::NVPList& attrs) +TAO_Notify_StructuredProxyPushSupplier::load_attrs (const TAO_Notify::NVPList& attrs) { SuperClass::load_attrs(attrs); ACE_CString ior; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushSupplier.h b/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushSupplier.h index 3b509c0f929..5990e0ebd12 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushSupplier.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Structured/StructuredProxyPushSupplier.h @@ -60,7 +60,7 @@ public: /// Release virtual void release (void); - virtual void load_attrs (const TAO_NOTIFY::NVPList& attrs); + virtual void load_attrs (const TAO_Notify::NVPList& attrs); /// = Servant methods // = interface methods diff --git a/TAO/orbsvcs/orbsvcs/Notify/SupplierAdmin.cpp b/TAO/orbsvcs/orbsvcs/Notify/SupplierAdmin.cpp index 29d142fc0c4..c5923eda2d4 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/SupplierAdmin.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/SupplierAdmin.cpp @@ -94,11 +94,11 @@ TAO_Notify_SupplierAdmin::destroy (ACE_ENV_SINGLE_ARG_DECL) ACE_CHECK; } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_SupplierAdmin::load_child (const ACE_CString &type, - CORBA::Long id, const TAO_NOTIFY::NVPList& attrs ACE_ENV_ARG_DECL) + CORBA::Long id, const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { - TAO_NOTIFY::Topology_Object* result = this; + TAO_Notify::Topology_Object* result = this; if (type == "proxy_push_consumer") { if (DEBUG_LEVEL) ACE_DEBUG ((LM_DEBUG, @@ -134,11 +134,11 @@ TAO_Notify_SupplierAdmin::load_child (const ACE_CString &type, return result; } -TAO_NOTIFY::Topology_Object* +TAO_Notify::Topology_Object* TAO_Notify_SupplierAdmin::load_proxy ( CORBA::Long id, CosNotifyChannelAdmin::ClientType ctype, - const TAO_NOTIFY::NVPList& attrs ACE_ENV_ARG_DECL) + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL) { TAO_Notify_Builder* bld = TAO_Notify_PROPERTIES::instance()->builder(); TAO_Notify_ProxyConsumer * proxy = @@ -409,6 +409,23 @@ TAO_Notify_SupplierAdmin::obtain_notification_pull_consumer (CosNotifyChannelAdm ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), CosNotifyChannelAdmin::ProxyConsumer::_nil ()); } +TAO_Notify_ProxyConsumer * +TAO_Notify_SupplierAdmin::find_proxy_consumer ( + TAO_Notify::IdVec & id_path, + size_t position + ACE_ENV_ARG_DECL) +{ + TAO_Notify_ProxyConsumer * result = 0; + size_t path_size = id_path.size (); + if (position < path_size) + { + TAO_Notify_ProxyConsumer_Find_Worker find_worker; + TAO_Notify_Proxy * proxy = find_worker.find (id_path[position], *this->proxy_container_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + result = dynamic_cast <TAO_Notify_ProxyConsumer *> (proxy); + } + return result; +} #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) diff --git a/TAO/orbsvcs/orbsvcs/Notify/SupplierAdmin.h b/TAO/orbsvcs/orbsvcs/Notify/SupplierAdmin.h index 020a2b817a1..2a3f168f7ef 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/SupplierAdmin.h +++ b/TAO/orbsvcs/orbsvcs/Notify/SupplierAdmin.h @@ -24,6 +24,8 @@ #include "Admin.h" +class TAO_Notify_ProxyConsumer; + #if defined(_MSC_VER) #if (_MSC_VER >= 1200) #pragma warning(push) @@ -60,18 +62,23 @@ public: virtual const char * get_admin_type_name () const; - virtual TAO_NOTIFY::Topology_Object* load_child ( + virtual TAO_Notify::Topology_Object* load_child ( const ACE_CString &type, CORBA::Long id, - const TAO_NOTIFY::NVPList& attrs + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL); + TAO_Notify_ProxyConsumer * find_proxy_consumer ( + TAO_Notify::IdVec & id_path, + size_t position + ACE_ENV_ARG_DECL); + protected: - TAO_NOTIFY::Topology_Object *load_proxy ( + TAO_Notify::Topology_Object *load_proxy ( CORBA::Long id, CosNotifyChannelAdmin::ClientType ctype, - const TAO_NOTIFY::NVPList& attrs + const TAO_Notify::NVPList& attrs ACE_ENV_ARG_DECL); /// = NotifyExt::SupplierAdmin methods diff --git a/TAO/orbsvcs/orbsvcs/Notify/Topology_Factory.h b/TAO/orbsvcs/orbsvcs/Notify/Topology_Factory.h index 7526159f717..30ffaadba58 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Topology_Factory.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Topology_Factory.h @@ -19,7 +19,7 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { class Topology_Saver; class Topology_Loader; diff --git a/TAO/orbsvcs/orbsvcs/Notify/Topology_Loader.cpp b/TAO/orbsvcs/orbsvcs/Notify/Topology_Loader.cpp index 4eb9e308531..253f988ff37 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Topology_Loader.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Topology_Loader.cpp @@ -2,15 +2,15 @@ #include "Topology_Loader.h" -TAO_NOTIFY::Topology_Loader::Topology_Loader () +TAO_Notify::Topology_Loader::Topology_Loader () { } -TAO_NOTIFY::Topology_Loader::~Topology_Loader () +TAO_Notify::Topology_Loader::~Topology_Loader () { } void -TAO_NOTIFY::Topology_Loader::close (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +TAO_Notify::Topology_Loader::close (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) { } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Topology_Loader.h b/TAO/orbsvcs/orbsvcs/Notify/Topology_Loader.h index a06494c80a1..5557b23246c 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Topology_Loader.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Topology_Loader.h @@ -23,7 +23,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { /// A forward declaration. @@ -66,7 +66,7 @@ public: virtual void close (ACE_ENV_SINGLE_ARG_DECL); }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #include /**/ "ace/post.h" diff --git a/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.cpp b/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.cpp index 68798b2e456..fa5875afcba 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.cpp @@ -13,7 +13,7 @@ // children have been saved in Topology_Object::save_persistent (). // If these rules are followed, the only risk is a (harmless) extra save. -namespace TAO_NOTIFY +namespace TAO_Notify { void Topology_Savable::reconnect (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) @@ -114,7 +114,7 @@ namespace TAO_NOTIFY } void - Topology_Object::get_id_path (TAO_NOTIFY::IdVec & id_path) const + Topology_Object::get_id_path (TAO_Notify::IdVec & id_path) const { if (this->topology_parent() != 0) { @@ -145,4 +145,4 @@ template class ACE_Array_Base <TAO_Notify_Object::ID>; #pragma instantiate ACE_Array_Base <TAO_Notify_Object::ID> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ -} // namespace TAO_NOTIFY +} // namespace TAO_Notify diff --git a/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.h b/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.h index 66112cdd215..ee3af40ecbd 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.h @@ -27,14 +27,14 @@ #endif /* ACE_LACKS_PRAGMA_ONCE */ -/// \namespace TAO_NOTIFY +/// \namespace TAO_Notify /// \brief A namespace to be used by all of TAO's Notification Service implementation. /// /// The initial implementation used the TAO_Notify_ prefix rather than a namespace. As part -/// of the reliable Notification Service project we started using this TAO_NOTIFY namespace, +/// of the reliable Notification Service project we started using this TAO_Notify namespace, /// but there are still many parts of the Notification Service that are in the global namespace /// with a TAO_NS prefix. -namespace TAO_NOTIFY +namespace TAO_Notify { static const char TOPOLOGY_ID_NAME[] = "TopologyID"; @@ -186,7 +186,7 @@ namespace TAO_NOTIFY bool child_change (ACE_ENV_SINGLE_ARG_DECL); }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #if defined (__ACE_INLINE__) #include "Topology_Object.inl" diff --git a/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.inl b/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.inl index 6c2c3b88396..efb34f9315f 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.inl +++ b/TAO/orbsvcs/orbsvcs/Notify/Topology_Object.inl @@ -1,5 +1,5 @@ // $Id$ -namespace TAO_NOTIFY +namespace TAO_Notify { ACE_INLINE bool @@ -16,5 +16,5 @@ namespace TAO_NOTIFY return send_change (ACE_ENV_SINGLE_ARG_PARAMETER); } -} // namespace TAO_NOTIFY +} // namespace TAO_Notify diff --git a/TAO/orbsvcs/orbsvcs/Notify/Topology_Saver.cpp b/TAO/orbsvcs/orbsvcs/Notify/Topology_Saver.cpp index a8aa71b1d15..91873af0136 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Topology_Saver.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Topology_Saver.cpp @@ -2,12 +2,12 @@ #include "Topology_Saver.h" -TAO_NOTIFY::Topology_Saver::~Topology_Saver () +TAO_Notify::Topology_Saver::~Topology_Saver () { } void -TAO_NOTIFY::Topology_Saver::close (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +TAO_Notify::Topology_Saver::close (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) { } diff --git a/TAO/orbsvcs/orbsvcs/Notify/Topology_Saver.h b/TAO/orbsvcs/orbsvcs/Notify/Topology_Saver.h index 5d4a9e4024b..781da2721b7 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Topology_Saver.h +++ b/TAO/orbsvcs/orbsvcs/Notify/Topology_Saver.h @@ -24,7 +24,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { /** * \brief An interface to be implemented by objects that save Topology. @@ -104,7 +104,7 @@ namespace TAO_NOTIFY */ virtual void close (ACE_ENV_SINGLE_ARG_DECL); }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #include /**/ "ace/post.h" diff --git a/TAO/orbsvcs/orbsvcs/Notify/XML_Loader.cpp b/TAO/orbsvcs/orbsvcs/Notify/XML_Loader.cpp index e9f1802f699..3e32458b1e3 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/XML_Loader.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/XML_Loader.cpp @@ -16,7 +16,7 @@ # define DEBUG_LEVEL TAO_debug_level #endif //DEBUG_LEVEL -using namespace TAO_NOTIFY; +using namespace TAO_Notify; namespace { CORBA::Long makeNVPList (NVPList& nvp, ACEXML_Attributes* attrs) @@ -36,7 +36,7 @@ namespace { } } -namespace TAO_NOTIFY +namespace TAO_Notify { XML_Loader::XML_Loader () : input_ (0) @@ -217,12 +217,12 @@ namespace TAO_NOTIFY } } -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Stack<TAO_NOTIFY::Topology_Object*>; -template class ACE_Node<TAO_NOTIFY::Topology_Object*>; +template class ACE_Unbounded_Stack<TAO_Notify::Topology_Object*>; +template class ACE_Node<TAO_Notify::Topology_Object*>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Unbounded_Stack<TAO_NOTIFY::Topology_Object*> -#pragma instantiate ACE_Node<TAO_NOTIFY::Topology_Object*> +#pragma instantiate ACE_Unbounded_Stack<TAO_Notify::Topology_Object*> +#pragma instantiate ACE_Node<TAO_Notify::Topology_Object*> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/XML_Loader.h b/TAO/orbsvcs/orbsvcs/Notify/XML_Loader.h index 3dcb9206caa..a56dd98809a 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/XML_Loader.h +++ b/TAO/orbsvcs/orbsvcs/Notify/XML_Loader.h @@ -31,7 +31,7 @@ #include "ace/streams.h" -namespace TAO_NOTIFY +namespace TAO_Notify { /// \brief Load Notification Service Topology from an XML file. @@ -80,7 +80,7 @@ private: bool live_; }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #include /**/ "ace/post.h" #endif /* XML_LOADER_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/XML_Saver.cpp b/TAO/orbsvcs/orbsvcs/Notify/XML_Saver.cpp index 695e065311b..7d968ee0290 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/XML_Saver.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/XML_Saver.cpp @@ -6,7 +6,7 @@ #include "ace/OS_NS_stdio.h" #include "ace/OS_NS_unistd.h" -namespace TAO_NOTIFY +namespace TAO_Notify { XML_Saver::XML_Saver(bool timestamp) : output_ (0) @@ -257,4 +257,4 @@ namespace TAO_NOTIFY return buffer; } -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/XML_Saver.h b/TAO/orbsvcs/orbsvcs/Notify/XML_Saver.h index e1956637a95..e0ff886ebd7 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/XML_Saver.h +++ b/TAO/orbsvcs/orbsvcs/Notify/XML_Saver.h @@ -23,7 +23,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { /** @@ -81,7 +81,7 @@ private: }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #include /**/ "ace/post.h" #endif /* XML_SAVER_H */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/XML_Topology_Factory.cpp b/TAO/orbsvcs/orbsvcs/Notify/XML_Topology_Factory.cpp index e7f0eaae2fb..e654afc71f3 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/XML_Topology_Factory.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/XML_Topology_Factory.cpp @@ -8,7 +8,7 @@ #include "ace/OS_NS_strings.h" //#include "ace/Service_Object.h" -namespace TAO_NOTIFY +namespace TAO_Notify { XML_Topology_Factory::XML_Topology_Factory() @@ -149,6 +149,6 @@ ACE_FACTORY_DECLARE (TAO_Notify_Persist, XML_Topology_Factory) ACE_FACTORY_DEFINE (TAO_Notify_Persist, XML_Topology_Factory) -} /* namespace TAO_NOTIFY */ +} /* namespace TAO_Notify */ diff --git a/TAO/orbsvcs/orbsvcs/Notify/XML_Topology_Factory.h b/TAO/orbsvcs/orbsvcs/Notify/XML_Topology_Factory.h index 97a14512cfa..8623ca53a9c 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/XML_Topology_Factory.h +++ b/TAO/orbsvcs/orbsvcs/Notify/XML_Topology_Factory.h @@ -25,7 +25,7 @@ #pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -namespace TAO_NOTIFY +namespace TAO_Notify { /** @@ -71,7 +71,7 @@ namespace TAO_NOTIFY bool timestamp_; }; -} // namespace TAO_NOTIFY +} // namespace TAO_Notify #include /**/ "ace/post.h" #endif /* XML_TOPOLOGY_FACTORY_H */ |