diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs')
59 files changed, 4665 insertions, 1927 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Basic_Factory.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Basic_Factory.cpp index 324aa050671..73fc5801f61 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Basic_Factory.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Basic_Factory.cpp @@ -10,7 +10,8 @@ #include "EC_ProxySupplier.h" #include "EC_ObserverStrategy.h" #include "EC_Null_Scheduling.h" -#include "EC_ProxyPushSupplier_Set_T.h" +#include "EC_Proxy_Collection.h" +#include "EC_Concrete_Proxy_Set.h" #include "EC_Reactive_Timeout_Generator.h" #include "EC_Reactive_ConsumerControl.h" #include "EC_Reactive_SupplierControl.h" @@ -140,12 +141,6 @@ TAO_EC_Basic_Factory::destroy_observer_strategy (TAO_EC_ObserverStrategy *x) delete x; } -TAO_EC_ProxyPushSupplier_Set* -TAO_EC_Basic_Factory::create_proxy_push_supplier_set (TAO_EC_Event_Channel *) -{ - return new TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH> (); -} - TAO_EC_Scheduling_Strategy* TAO_EC_Basic_Factory::create_scheduling_strategy (TAO_EC_Event_Channel*) { @@ -158,56 +153,56 @@ TAO_EC_Basic_Factory::destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy* x delete x; } -void -TAO_EC_Basic_Factory::destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set *x) -{ - delete x; -} - -ACE_Lock* -TAO_EC_Basic_Factory::create_consumer_lock (void) +TAO_EC_ProxyPushConsumer_Collection* +TAO_EC_Basic_Factory::create_proxy_push_consumer_collection (TAO_EC_Event_Channel *) { - return new ACE_Lock_Adapter<ACE_SYNCH_MUTEX> (); + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH> (); } void -TAO_EC_Basic_Factory::destroy_consumer_lock (ACE_Lock* x) +TAO_EC_Basic_Factory::destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection *x) { delete x; } -ACE_Lock* -TAO_EC_Basic_Factory::create_supplier_lock (void) +TAO_EC_ProxyPushSupplier_Collection* +TAO_EC_Basic_Factory::create_proxy_push_supplier_collection (TAO_EC_Event_Channel *) { - return new ACE_Lock_Adapter<ACE_SYNCH_RECURSIVE_MUTEX> (); + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH> (); } void -TAO_EC_Basic_Factory::destroy_supplier_lock (ACE_Lock* x) +TAO_EC_Basic_Factory::destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection *x) { delete x; } ACE_Lock* -TAO_EC_Basic_Factory::create_consumer_admin_lock (void) +TAO_EC_Basic_Factory::create_consumer_lock (void) { return new ACE_Lock_Adapter<ACE_SYNCH_MUTEX> (); } void -TAO_EC_Basic_Factory::destroy_consumer_admin_lock (ACE_Lock* x) +TAO_EC_Basic_Factory::destroy_consumer_lock (ACE_Lock* x) { delete x; } ACE_Lock* -TAO_EC_Basic_Factory::create_supplier_admin_lock (void) +TAO_EC_Basic_Factory::create_supplier_lock (void) { - return new ACE_Lock_Adapter<ACE_SYNCH_MUTEX> (); + return new ACE_Lock_Adapter<ACE_SYNCH_RECURSIVE_MUTEX> (); } void -TAO_EC_Basic_Factory::destroy_supplier_admin_lock (ACE_Lock* x) +TAO_EC_Basic_Factory::destroy_supplier_lock (ACE_Lock* x) { delete x; } @@ -250,16 +245,6 @@ TAO_EC_Basic_Factory::destroy_supplier_control (TAO_EC_SupplierControl* x) #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH>; -template class ACE_Node<ACE_Command_Base*>; -template class ACE_Unbounded_Queue<ACE_Command_Base*>; -template class ACE_Unbounded_Queue_Iterator<ACE_Command_Base*>; - #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH> -#pragma instantiate ACE_Node<ACE_Command_Base*> -#pragma instantiate ACE_Unbounded_Queue<ACE_Command_Base*> -#pragma instantiate ACE_Unbounded_Queue_Iterator<ACE_Command_Base*> - #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Basic_Factory.h b/TAO/orbsvcs/orbsvcs/Event/EC_Basic_Factory.h index 23e716ad320..50eaa576ff0 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Basic_Factory.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Basic_Factory.h @@ -94,21 +94,20 @@ public: create_scheduling_strategy (TAO_EC_Event_Channel*); virtual void destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy*); - virtual TAO_EC_ProxyPushSupplier_Set* - create_proxy_push_supplier_set (TAO_EC_Event_Channel*); + virtual TAO_EC_ProxyPushConsumer_Collection* + create_proxy_push_consumer_collection (TAO_EC_Event_Channel*); virtual void - destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set*); + destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection*); + virtual TAO_EC_ProxyPushSupplier_Collection* + create_proxy_push_supplier_collection (TAO_EC_Event_Channel*); + virtual void + destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection*); virtual ACE_Lock* create_consumer_lock (void); virtual void destroy_consumer_lock (ACE_Lock*); virtual ACE_Lock* create_supplier_lock (void); virtual void destroy_supplier_lock (ACE_Lock*); - virtual ACE_Lock* create_consumer_admin_lock (void); - virtual void destroy_consumer_admin_lock (ACE_Lock*); - virtual ACE_Lock* create_supplier_admin_lock (void); - virtual void destroy_supplier_admin_lock (ACE_Lock*); - virtual TAO_EC_ConsumerControl* create_consumer_control (TAO_EC_Event_Channel*); virtual void diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Command.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Command.cpp index b0dff01c455..99a7d944840 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Command.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Command.cpp @@ -25,6 +25,19 @@ TAO_EC_Connected_Command<Target,Object>::execute (void* arg) // **************************************************************** template<class Target, class Object> int +TAO_EC_Reconnected_Command<Target,Object>::execute (void* arg) +{ + CORBA::Environment *env = &TAO_default_environment (); + if (arg != 0) + env = ACE_static_cast(CORBA::Environment*, arg); + + this->target_->reconnected_i (this->object_, *env); + return 0; +} + +// **************************************************************** + +template<class Target, class Object> int TAO_EC_Disconnected_Command<Target,Object>::execute (void* arg) { CORBA::Environment *env = &TAO_default_environment (); @@ -38,7 +51,7 @@ TAO_EC_Disconnected_Command<Target,Object>::execute (void* arg) // **************************************************************** template<class Target> int -TAO_EC_Shutdown_Command_T<Target>::execute (void* arg) +TAO_EC_Shutdown_Command<Target>::execute (void* arg) { CORBA::Environment *env = &TAO_default_environment (); if (arg != 0) diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Command.h b/TAO/orbsvcs/orbsvcs/Event/EC_Command.h index 24fe8431f62..7afeee9660f 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Command.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Command.h @@ -73,6 +73,47 @@ private: // **************************************************************** template<class Target, class Object> +class TAO_EC_Reconnected_Command : public ACE_Command_Base +{ + // = TITLE + // EC_Reconnected_Command + // + // = DESCRIPTION + // Implements a Command object that invokes the reconnected_i() method + // on the target, passing an argument of type Object. + // + // = MEMORY MANAGMENT + // It does not assume ownership of Object nor the Target + // arguments. + // Usually allocated from the heap or an allocator; but it is not + // self-managed. + // + // = LOCKING + // No provisions for locking, access must be serialized + // externally. + // + // = TODO + // +public: + TAO_EC_Reconnected_Command (Target *target, + Object *object); + // constructor... + + virtual int execute (void *arg); + // The callback method, if the argument is not nil it is interpreted + // as a CORBA::Environment. + +private: + Target *target_; + // The target + + Object *object_; + // The argument +}; + +// **************************************************************** + +template<class Target, class Object> class TAO_EC_Disconnected_Command : public ACE_Command_Base { // = TITLE @@ -114,7 +155,7 @@ private: // **************************************************************** template<class Target> -class TAO_EC_Shutdown_Command_T : public ACE_Command_Base +class TAO_EC_Shutdown_Command : public ACE_Command_Base { // = TITLE // EC_Shutdown_Command @@ -136,7 +177,7 @@ class TAO_EC_Shutdown_Command_T : public ACE_Command_Base // = TODO // public: - TAO_EC_Shutdown_Command_T (Target *target); + TAO_EC_Shutdown_Command (Target *target); // constructor... virtual int execute (void *arg); diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Command.i b/TAO/orbsvcs/orbsvcs/Event/EC_Command.i index 202c66c0e16..46f76b31f9b 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Command.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Command.i @@ -12,6 +12,17 @@ TAO_EC_Connected_Command<Target,Object>:: // **************************************************************** template<class Target, class Object> +TAO_EC_Reconnected_Command<Target,Object>:: + TAO_EC_Reconnected_Command (Target *target, + Object *object) + : target_ (target), + object_ (object) +{ +} + +// **************************************************************** + +template<class Target, class Object> TAO_EC_Disconnected_Command<Target,Object>:: TAO_EC_Disconnected_Command (Target *target, Object *object) @@ -23,8 +34,8 @@ TAO_EC_Disconnected_Command<Target,Object>:: // **************************************************************** template<class Target> -TAO_EC_Shutdown_Command_T<Target>:: - TAO_EC_Shutdown_Command_T (Target *target) +TAO_EC_Shutdown_Command<Target>:: + TAO_EC_Shutdown_Command (Target *target) : target_ (target) { } diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.cpp new file mode 100644 index 00000000000..ce906d4fdc9 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.cpp @@ -0,0 +1,158 @@ +// $Id$ + +#ifndef TAO_EC_CONCRETE_PROXY_SET_CPP +#define TAO_EC_CONCRETE_PROXY_SET_CPP + +#include "EC_Concrete_Proxy_Set.h" + +#if ! defined (__ACE_INLINE__) +#include "EC_Concrete_Proxy_Set.i" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(Event, EC_Concrete_Proxy_Set, "$Id$") + +template<class PROXY> +TAO_EC_List_Based_Proxy_Set<PROXY>:: + TAO_EC_List_Based_Proxy_Set (void) +{ +} + +template<class PROXY> void +TAO_EC_List_Based_Proxy_Set<PROXY>::connected (PROXY *proxy, + CORBA::Environment &) +{ + int r = this->impl_.insert (proxy); + if (r == 0) + return; + + if (r == 1) + { + // @@ Already there, throw some user exception.. + } + if (r == -1) + { + // @@ Cannot insert, running out of memory? throw some other + // user exception + } +} + +template<class PROXY> void +TAO_EC_List_Based_Proxy_Set<PROXY>::reconnected (PROXY *proxy, + CORBA::Environment &) +{ + int r = this->impl_.insert (proxy); + if (r == 0 || r == 1) { + // Reference count is incremented by the callers to [re]connected. + // @@ Find out if the protocol could be simplified, and decoupling + // increased. + proxy->_decr_refcnt (); + return; + } + + if (r == -1) + { + // @@ Cannot insert, running out of memory? throw some other + // user exception + } +} + +template<class PROXY> void +TAO_EC_List_Based_Proxy_Set<PROXY>::disconnected (PROXY *proxy, + CORBA::Environment &) +{ + int r = this->impl_.remove (proxy); + if (r != 0) + { + // @@ Cannot remove, throw some other + // user exception + return; + } + proxy->_decr_refcnt (); +} + +template<class PROXY> void +TAO_EC_List_Based_Proxy_Set<PROXY>::shutdown (CORBA::Environment &) +{ + Iterator end = this->impl_.end (); + for (Iterator i = this->impl_.begin (); i != end; ++i) + { + // Decrement reference count + (*i)->_decr_refcnt (); + } + this->impl_.reset (); +} + +// **************************************************************** + +template<class PROXY> +TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>:: + TAO_EC_RB_Tree_Based_Proxy_Set (void) +{ +} + +template<class PROXY> void +TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::connected (PROXY *proxy, + CORBA::Environment &) +{ + int r = this->impl_.bind (proxy, 1); + if (r == 0) + return; + + if (r == 1) + { + // @@ Already there, throw some user exception.. + } + if (r == -1) + { + // @@ Cannot insert, running out of memory? throw some other + // user exception + } +} + +template<class PROXY> void +TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::reconnected (PROXY *proxy, + CORBA::Environment &) +{ + int r = this->impl_.rebind (proxy, 1); + if (r != 0) { + // Reference count is incremented by the callers to [re]connected. + // @@ Find out if the protocol could be simplified, and decoupling + // increased. + proxy->_decr_refcnt (); + return; + } + + if (r == 0) + { + // @@ Cannot insert, running out of memory? throw some other + // user exception + } +} + +template<class PROXY> void +TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::disconnected (PROXY *proxy, + CORBA::Environment &) +{ + int r = this->impl_.unbind (proxy); + if (r != 0) + { + // @@ Cannot remove, throw some other + // user exception + return; + } + proxy->_decr_refcnt (); +} + +template<class PROXY> void +TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::shutdown (CORBA::Environment &) +{ + Iterator end = this->impl_.end (); + for (Iterator i = this->impl_.begin (); i != end; ++i) + { + // Decrement reference count + (*i)->_decr_refcnt (); + } + this->impl_.clear (); +} + +#endif /* TAO_EC_CONCRETE_PROXY_SET_CPP */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.h b/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.h new file mode 100644 index 00000000000..ed11db914e8 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.h @@ -0,0 +1,117 @@ +/* -*- C++ -*- */ +// $Id$ +// +// ============================================================================ +// +// = LIBRARY +// ORBSVCS Real-time Event Channel +// +// = FILENAME +// EC_Concrete_Proxy_Set +// +// = AUTHOR +// Carlos O'Ryan (coryan@cs.wustl.edu) +// +// = CREDITS +// http://www.cs.wustl.edu/~coryan/EC/index.html +// +// ============================================================================ + +#ifndef TAO_EC_CONCRETE_PROXY_SET_H +#define TAO_EC_CONCRETE_PROXY_SET_H + +#include "tao/corba.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ace/Containers.h" +#include "ace/RB_Tree.h" + +template<class PROXY> +class TAO_EC_List_Based_Proxy_Set +{ +public: + typedef ACE_Unbounded_Set<PROXY*> Implementation; + typedef ACE_Unbounded_Set_Iterator<PROXY*> Iterator; + + TAO_EC_List_Based_Proxy_Set (void); + + Iterator begin (void); + Iterator end (void); + size_t size (void) const; + void connected (PROXY *, + CORBA::Environment &); + void reconnected (PROXY *, + CORBA::Environment &); + void disconnected (PROXY *, + CORBA::Environment &); + void shutdown (CORBA::Environment &); + +private: + Implementation impl_; +}; + +// **************************************************************** + +template<class PROXY> +class TAO_EC_RB_Tree_Based_Proxy_Set_Iterator +{ +public: + typedef ACE_RB_Tree<PROXY*,int,ACE_Less_Than<PROXY*>,ACE_Null_Mutex> Collection; + typedef Collection::ITERATOR Implementation; + + TAO_EC_RB_Tree_Based_Proxy_Set_Iterator (const Implementation &i); + + int operator == (const TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY> &rhs) const; + int operator != (const TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY> &rhs) const; + TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY>& operator++ (void); + TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY> operator++ (int); + PROXY *operator *(void); + +private: + Implementation impl_; +}; + +// **************************************************************** + +template<class PROXY> +class TAO_EC_RB_Tree_Based_Proxy_Set +{ +public: + typedef ACE_RB_Tree<PROXY*,int,ACE_Less_Than<PROXY*>,ACE_Null_Mutex> Implementation; + typedef TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY> Iterator; + + TAO_EC_RB_Tree_Based_Proxy_Set (void); + + Iterator begin (void); + Iterator end (void); + size_t size (void) const; + void connected (PROXY *, + CORBA::Environment &); + void reconnected (PROXY *, + CORBA::Environment &); + void disconnected (PROXY *, + CORBA::Environment &); + void shutdown (CORBA::Environment &); + +private: + Implementation impl_; +}; + +// **************************************************************** + +#if defined (__ACE_INLINE__) +#include "EC_Concrete_Proxy_Set.i" +#endif /* __ACE_INLINE__ */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "EC_Concrete_Proxy_Set.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("EC_Concrete_Proxy_Set.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#endif /* TAO_EC_CONCRETE_PROXY_SET_H */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.i b/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.i new file mode 100644 index 00000000000..91888df48a7 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Concrete_Proxy_Set.i @@ -0,0 +1,83 @@ +// $Id$ + +template<class PROXY> ACE_INLINE TAO_EC_List_Based_Proxy_Set<PROXY>::Iterator +TAO_EC_List_Based_Proxy_Set<PROXY>::begin (void) +{ + return this->impl_.begin (); +} + +template<class PROXY> ACE_INLINE TAO_EC_List_Based_Proxy_Set<PROXY>::Iterator +TAO_EC_List_Based_Proxy_Set<PROXY>::end (void) +{ + return this->impl_.end (); +} + +template<class PROXY> ACE_INLINE size_t +TAO_EC_List_Based_Proxy_Set<PROXY>::size (void) const +{ + return this->impl_.size (); +} + +// **************************************************************** + +template<class PROXY> ACE_INLINE +TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY>:: + TAO_EC_RB_Tree_Based_Proxy_Set_Iterator (const Implementation &i) + : impl_ (i) +{ +} + +template<class PROXY> ACE_INLINE int +TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY>:: + operator == (const TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY> &rhs) const +{ + return this->impl_ == rhs.impl_; +} + +template<class PROXY> ACE_INLINE int +TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY>:: + operator != (const TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY> &rhs) const +{ + return this->impl_ != rhs.impl_; +} + +template<class PROXY> ACE_INLINE TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY>& +TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY>::operator++ (void) +{ + ++this->impl_; + return *this; +} + +template<class PROXY> ACE_INLINE TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY> +TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY>::operator++ (int) +{ + TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY> tmp = *this; + ++this->impl_; + return tmp; +} + +template<class PROXY> ACE_INLINE PROXY* +TAO_EC_RB_Tree_Based_Proxy_Set_Iterator<PROXY>::operator *(void) +{ + return (*this->impl_).key (); +} + +// **************************************************************** + +template<class PROXY> ACE_INLINE TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::Iterator +TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::begin (void) +{ + return Iterator (this->impl_.begin ()); +} + +template<class PROXY> ACE_INLINE TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::Iterator +TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::end (void) +{ + return Iterator (this->impl_.end ()); +} + +template<class PROXY> ACE_INLINE size_t +TAO_EC_RB_Tree_Based_Proxy_Set<PROXY>::size (void) const +{ + return this->impl_.current_size (); +} diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.cpp index b8b54f47aba..284845dfca1 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.cpp @@ -13,16 +13,20 @@ ACE_RCSID(Event, EC_ConsumerAdmin, "$Id$") TAO_EC_ConsumerAdmin::TAO_EC_ConsumerAdmin (TAO_EC_Event_Channel *ec, - TAO_EC_ProxyPushSupplier_Set* ss) + Collection *collection) : event_channel_ (ec), - supplier_set_ (ss) + collection_ (collection) { - if (this->supplier_set_ == 0) + if (this->collection_ == 0) { - this->supplier_set_ = - this->event_channel_->create_proxy_push_supplier_set (); - this->supplier_set_->busy_hwm (this->event_channel_->busy_hwm ()); - this->supplier_set_->max_write_delay (this->event_channel_->max_write_delay ()); + this->collection_ = + this->event_channel_->create_proxy_push_supplier_collection (); + + // @@ + // @@ this->collection_->busy_hwm (this->event_channel_->busy_hwm ()); + // @@ this->collection_->max_write_delay ( + // @@ this->event_channel_->max_write_delay () + // @@ ); } this->default_POA_ = this->event_channel_->consumer_poa (); @@ -30,121 +34,65 @@ TAO_EC_ConsumerAdmin::TAO_EC_ConsumerAdmin (TAO_EC_Event_Channel *ec, TAO_EC_ConsumerAdmin::~TAO_EC_ConsumerAdmin (void) { - this->event_channel_->destroy_proxy_push_supplier_set (this->supplier_set_); - this->supplier_set_ = 0; + this->event_channel_->destroy_proxy_push_supplier_collection (this->collection_); + this->collection_ = 0; } void TAO_EC_ConsumerAdmin::connected (TAO_EC_ProxyPushConsumer *consumer, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX (TAO_EC_ConsumerAdmin::Busy_Lock, - ace_mon, this->busy_lock (), - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; + TAO_EC_Connect_Consumer worker (consumer); - SupplierSetIterator end = this->end (); - for (SupplierSetIterator i = this->begin (); - i != end; - ++i) - { - (*i)->connected (consumer, ACE_TRY_ENV); - ACE_CHECK; - consumer->connected (*i, ACE_TRY_ENV); - ACE_CHECK; - } + this->collection_->for_each (&worker, ACE_TRY_ENV); } void TAO_EC_ConsumerAdmin::reconnected (TAO_EC_ProxyPushConsumer *consumer, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX (TAO_EC_ConsumerAdmin::Busy_Lock, - ace_mon, this->busy_lock (), - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; + TAO_EC_Reconnect_Consumer worker (consumer); - SupplierSetIterator end = this->end (); - for (SupplierSetIterator i = this->begin (); - i != end; - ++i) - { - (*i)->reconnected (consumer, ACE_TRY_ENV); - ACE_CHECK; - consumer->reconnected (*i, ACE_TRY_ENV); - ACE_CHECK; - } + this->collection_->for_each (&worker, ACE_TRY_ENV); } void TAO_EC_ConsumerAdmin::disconnected (TAO_EC_ProxyPushConsumer *consumer, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX (TAO_EC_ConsumerAdmin::Busy_Lock, - ace_mon, this->busy_lock (), - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; + TAO_EC_Disconnect_Consumer worker (consumer); - SupplierSetIterator end = this->end (); - for (SupplierSetIterator i = this->begin (); - i != end; - ++i) - { - (*i)->disconnected (consumer, ACE_TRY_ENV); - ACE_CHECK; - consumer->disconnected (*i, ACE_TRY_ENV); - ACE_CHECK; - } + this->collection_->for_each (&worker, ACE_TRY_ENV); } void TAO_EC_ConsumerAdmin::connected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &ACE_TRY_ENV) { - this->supplier_set_->connected (supplier, ACE_TRY_ENV); + this->collection_->connected (supplier, ACE_TRY_ENV); } void TAO_EC_ConsumerAdmin::reconnected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &ACE_TRY_ENV) { - this->supplier_set_->connected (supplier, ACE_TRY_ENV); + this->collection_->connected (supplier, ACE_TRY_ENV); } void TAO_EC_ConsumerAdmin::disconnected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &ACE_TRY_ENV) { - this->supplier_set_->disconnected (supplier, ACE_TRY_ENV); + this->collection_->disconnected (supplier, ACE_TRY_ENV); } void TAO_EC_ConsumerAdmin::shutdown (CORBA::Environment &ACE_TRY_ENV) { - { - ACE_GUARD_THROW_EX (TAO_EC_ConsumerAdmin::Busy_Lock, - ace_mon, this->busy_lock (), - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - SupplierSetIterator end = this->end (); - for (SupplierSetIterator i = this->begin (); - i != end; - ++i) - { - ACE_TRY - { - (*i)->shutdown (ACE_TRY_ENV); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - /* ignore all exceptions */ - } - ACE_ENDTRY; - } - } - this->supplier_set_->shutdown (ACE_TRY_ENV); + TAO_EC_Shutdown_Supplier worker; + + this->collection_->for_each (&worker, ACE_TRY_ENV); + this->collection_->shutdown (ACE_TRY_ENV); } RtecEventChannelAdmin::ProxyPushSupplier_ptr @@ -163,8 +111,67 @@ TAO_EC_ConsumerAdmin::_default_POA (CORBA::Environment&) return PortableServer::POA::_duplicate (this->default_POA_.in ()); } +// **************************************************************** + +void +TAO_EC_Connect_Consumer::work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV) +{ + supplier->connected (this->consumer_, ACE_TRY_ENV); + ACE_CHECK; + this->consumer_->connected (supplier, ACE_TRY_ENV); + ACE_CHECK; +} + +// **************************************************************** + +void +TAO_EC_Reconnect_Consumer::work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV) +{ + supplier->reconnected (this->consumer_, ACE_TRY_ENV); + ACE_CHECK; + this->consumer_->reconnected (supplier, ACE_TRY_ENV); + ACE_CHECK; +} + +// **************************************************************** + +void +TAO_EC_Disconnect_Consumer::work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV) +{ + supplier->disconnected (this->consumer_, ACE_TRY_ENV); + ACE_CHECK; + this->consumer_->disconnected (supplier, ACE_TRY_ENV); + ACE_CHECK; +} + +// **************************************************************** + +void +TAO_EC_Shutdown_Supplier::work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_TRY + { + supplier->shutdown (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + // Ignore exceptions + } + ACE_ENDTRY; +} + + #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +template class TAO_EC_Worker<TAO_EC_ProxyPushSupplier>; + #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate TAO_EC_Worker<TAO_EC_ProxyPushSupplier> + #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.h b/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.h index 6461e41aa22..ccf41f58432 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.h @@ -24,14 +24,14 @@ #ifndef TAO_EC_CONSUMERADMIN_H #define TAO_EC_CONSUMERADMIN_H -#include "ace/Containers.h" +#include "orbsvcs/RtecEventChannelAdminS.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -#include "orbsvcs/RtecEventChannelAdminS.h" -#include "EC_ProxyPushSupplier_Set.h" +#include "EC_Proxy_Collection.h" +#include "EC_Worker.h" class TAO_EC_Event_Channel; class TAO_EC_ProxyPushSupplier; @@ -58,8 +58,9 @@ class TAO_ORBSVCS_Export TAO_EC_ConsumerAdmin : public POA_RtecEventChannelAdmin // = TODO // public: + typedef TAO_EC_Proxy_Collection<TAO_EC_ProxyPushSupplier> Collection; TAO_EC_ConsumerAdmin (TAO_EC_Event_Channel* event_channel, - TAO_EC_ProxyPushSupplier_Set* supplier_set = 0); + Collection* collection = 0); // constructor. If <supplier_set> is nil then it builds one using // the <event_channel> argument. // In any case it assumes ownership. @@ -67,15 +68,9 @@ public: virtual ~TAO_EC_ConsumerAdmin (void); // destructor... - typedef TAO_EC_ProxyPushSupplier_Set::SupplierSet SupplierSet; - typedef TAO_EC_ProxyPushSupplier_Set::SupplierSetIterator SupplierSetIterator; - - SupplierSetIterator begin (void); - SupplierSetIterator end (void); - // Iterators over the set of ProxyPushSuppliers - - typedef TAO_EC_ProxyPushSupplier_Set::Busy_Lock Busy_Lock; - Busy_Lock& busy_lock (void); + void for_each (TAO_EC_Worker<TAO_EC_ProxyPushSupplier> *worker, + CORBA::Environment &ACE_TRY_ENV); + // For each elements call <worker->work()>. virtual void connected (TAO_EC_ProxyPushConsumer*, CORBA::Environment&); @@ -111,13 +106,90 @@ private: TAO_EC_Event_Channel *event_channel_; // The Event Channel we belong to - TAO_EC_ProxyPushSupplier_Set* supplier_set_; - // The implementation for the supplier set container. + Collection *collection_; + // The supplier container. PortableServer::POA_var default_POA_; // Store the default POA. }; +// **************************************************************** + +class TAO_EC_Connect_Consumer : public TAO_EC_Worker<TAO_EC_ProxyPushSupplier> +{ + // = TITLE + // TAO_EC_Connect_Consumer + // + // = DESCRIPTION + // Worker class to connect the ProxyPushConsumer objects with all + // the ProxyPushSupplier objects in the collection. + // +public: + TAO_EC_Connect_Consumer (TAO_EC_ProxyPushConsumer *consumer); + // Constructor + + void work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_ProxyPushConsumer *consumer_; +}; + +// **************************************************************** + +class TAO_EC_Reconnect_Consumer : public TAO_EC_Worker<TAO_EC_ProxyPushSupplier> +{ + // = TITLE + // TAO_EC_Reconnect_Consumer + // + // = DESCRIPTION + // Worker class to reconnect the ProxyPushConsumer objects with all + // the ProxyPushSupplier objects in the collection. + // +public: + TAO_EC_Reconnect_Consumer (TAO_EC_ProxyPushConsumer *consumer); + // Constructor + + void work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_ProxyPushConsumer *consumer_; +}; + +// **************************************************************** + +class TAO_EC_Disconnect_Consumer : public TAO_EC_Worker<TAO_EC_ProxyPushSupplier> +{ + // = TITLE + // TAO_EC_Disconnect_Consumer + // + // = DESCRIPTION + // Worker class to disconnect the ProxyPushConsumer objects with all + // the ProxyPushSupplier objects in the collection. + // +public: + TAO_EC_Disconnect_Consumer (TAO_EC_ProxyPushConsumer *consumer); + // Constructor + + void work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_ProxyPushConsumer *consumer_; +}; + +// **************************************************************** + +class TAO_EC_Shutdown_Supplier : public TAO_EC_Worker<TAO_EC_ProxyPushSupplier> +{ +public: + TAO_EC_Shutdown_Supplier (void); + + void work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV); +}; + #if defined (__ACE_INLINE__) #include "EC_ConsumerAdmin.i" #endif /* __ACE_INLINE__ */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.i b/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.i index ee065379a5e..33c51235be2 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_ConsumerAdmin.i @@ -1,19 +1,43 @@ // $Id$ -ACE_INLINE TAO_EC_ConsumerAdmin::SupplierSetIterator -TAO_EC_ConsumerAdmin::begin (void) +ACE_INLINE void +TAO_EC_ConsumerAdmin:: + for_each (TAO_EC_Worker<TAO_EC_ProxyPushSupplier> *worker, + CORBA::Environment &ACE_TRY_ENV) { - return this->supplier_set_->begin (); + this->collection_->for_each (worker, ACE_TRY_ENV); } -ACE_INLINE TAO_EC_ConsumerAdmin::SupplierSetIterator -TAO_EC_ConsumerAdmin::end (void) +// **************************************************************** + +ACE_INLINE +TAO_EC_Connect_Consumer:: + TAO_EC_Connect_Consumer (TAO_EC_ProxyPushConsumer *consumer) + : consumer_ (consumer) +{ +} + +// **************************************************************** + +ACE_INLINE +TAO_EC_Reconnect_Consumer:: + TAO_EC_Reconnect_Consumer (TAO_EC_ProxyPushConsumer *consumer) + : consumer_ (consumer) { - return this->supplier_set_->end (); } -ACE_INLINE TAO_EC_ConsumerAdmin::Busy_Lock& -TAO_EC_ConsumerAdmin::busy_lock (void) +// **************************************************************** + +ACE_INLINE +TAO_EC_Disconnect_Consumer:: + TAO_EC_Disconnect_Consumer (TAO_EC_ProxyPushConsumer *consumer) + : consumer_ (consumer) +{ +} + +// **************************************************************** + +ACE_INLINE +TAO_EC_Shutdown_Supplier::TAO_EC_Shutdown_Supplier (void) { - return this->supplier_set_->busy_lock (); } diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.cpp index bfdb29483c7..ce34cdbd33a 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.cpp @@ -14,7 +14,8 @@ #include "EC_ObserverStrategy.h" #include "EC_Null_Scheduling.h" #include "EC_Priority_Scheduling.h" -#include "EC_ProxyPushSupplier_Set_T.h" +#include "EC_Proxy_Collection.h" +#include "EC_Concrete_Proxy_Set.h" #include "EC_Reactive_Timeout_Generator.h" #include "EC_Event_Channel.h" #include "EC_Reactive_ConsumerControl.h" @@ -234,97 +235,95 @@ TAO_EC_Default_Factory::init (int argc, char* argv[]) } } - else if (ACE_OS::strcasecmp (arg, "-ECPushSupplierSet") == 0) + else if (ACE_OS::strcasecmp (arg, "-ECProxyPushConsumerCollection") == 0) { arg_shifter.consume_arg (); if (arg_shifter.is_parameter_next ()) { char* opt = arg_shifter.get_current (); - if (ACE_OS::strcasecmp (opt, "immediate") == 0) - { - this->supplier_set_ = 0; - } - else if (ACE_OS::strcasecmp (opt, "delayed") == 0) - { - this->supplier_set_ = 1; - } - else if (ACE_OS::strcasecmp (opt, "immediate_st") == 0) - { - this->supplier_set_ = 2; - } - else - { - ACE_ERROR ((LM_ERROR, - "EC_Default_Factory - " - "unsupported supplier set <%s>\n", - opt)); - } - arg_shifter.consume_arg (); - } - } - - else if (ACE_OS::strcasecmp (arg, "-ECProxyConsumerLock") == 0) - { - arg_shifter.consume_arg (); - - if (arg_shifter.is_parameter_next ()) - { - char* opt = arg_shifter.get_current (); - if (ACE_OS::strcasecmp (opt, "null") == 0) - { - this->consumer_lock_ = 0; - } - else if (ACE_OS::strcasecmp (opt, "thread") == 0) - { - this->consumer_lock_ = 1; - } - else if (ACE_OS::strcasecmp (opt, "recursive") == 0) + int collection_type = 0; + int synch_type = 0; + int iteration_type = 0; + + char* aux; + for (char* arg = ACE_OS::strtok_r (opt, ":", &aux); + arg != 0; + arg = ACE_OS::strtok_r (0, ":", &aux)) { - this->consumer_lock_ = 2; - } - else - { - ACE_ERROR ((LM_ERROR, - "EC_Default_Factory - " - "unsupported consumer lock <%s>\n", - opt)); + if (ACE_OS::strcasecmp (arg, "mt") == 0) + synch_type = 0; + else if (ACE_OS::strcasecmp (arg, "st") == 0) + synch_type = 0; + else if (ACE_OS::strcasecmp (arg, "list") == 0) + collection_type = 0; + else if (ACE_OS::strcasecmp (arg, "rb_tree") == 0) + collection_type = 1; + else if (ACE_OS::strcasecmp (arg, "immediate") == 0) + iteration_type = 0; + else if (ACE_OS::strcasecmp (arg, "copy_on_read") == 0) + iteration_type = 1; + else if (ACE_OS::strcasecmp (arg, "copy_on_write") == 0) + iteration_type = 2; + else if (ACE_OS::strcasecmp (arg, "delayed") == 0) + iteration_type = 3; + else + ACE_ERROR ((LM_ERROR, + "EC_Default_Factory - " + "unknown collection modifier <%s>\n", + arg)); } + this->consumer_collection_ = + (synch_type << 8) |(collection_type << 4) | iteration_type; arg_shifter.consume_arg (); } } - else if (ACE_OS::strcasecmp (arg, "-ECProxySupplierLock") == 0) + else if (ACE_OS::strcasecmp (arg, "-ECProxyPushSupplierCollection") == 0) { arg_shifter.consume_arg (); if (arg_shifter.is_parameter_next ()) { char* opt = arg_shifter.get_current (); - if (ACE_OS::strcasecmp (opt, "null") == 0) - { - this->supplier_lock_ = 0; - } - else if (ACE_OS::strcasecmp (opt, "thread") == 0) + int collection_type = 0; + int synch_type = 0; + int iteration_type = 0; + + char* aux; + for (char* arg = ACE_OS::strtok_r (opt, ":", &aux); + arg != 0; + arg = ACE_OS::strtok_r (0, ":", &aux)) { - this->supplier_lock_ = 1; - } - else if (ACE_OS::strcasecmp (opt, "recursive") == 0) - { - this->supplier_lock_ = 2; - } - else - { - ACE_ERROR ((LM_ERROR, - "EC_Default_Factory - " - "unsupported supplier lock <%s>\n", - opt)); + if (ACE_OS::strcasecmp (arg, "mt") == 0) + synch_type = 0; + else if (ACE_OS::strcasecmp (arg, "st") == 0) + synch_type = 0; + else if (ACE_OS::strcasecmp (arg, "list") == 0) + collection_type = 0; + else if (ACE_OS::strcasecmp (arg, "rb_tree") == 0) + collection_type = 1; + else if (ACE_OS::strcasecmp (arg, "immediate") == 0) + iteration_type = 0; + else if (ACE_OS::strcasecmp (arg, "copy_on_read") == 0) + iteration_type = 1; + else if (ACE_OS::strcasecmp (arg, "copy_on_write") == 0) + iteration_type = 2; + else if (ACE_OS::strcasecmp (arg, "delayed") == 0) + iteration_type = 3; + else + ACE_ERROR ((LM_ERROR, + "EC_Default_Factory - " + "unknown collection modifier <%s>\n", + arg)); } + this->supplier_collection_ = + (synch_type << 8) | (collection_type << 4) | iteration_type; arg_shifter.consume_arg (); } } - else if (ACE_OS::strcasecmp (arg, "-ECConsumerAdminLock") == 0) + else if (ACE_OS::strcasecmp (arg, "-ECProxyConsumerLock") == 0) { arg_shifter.consume_arg (); @@ -333,28 +332,28 @@ TAO_EC_Default_Factory::init (int argc, char* argv[]) char* opt = arg_shifter.get_current (); if (ACE_OS::strcasecmp (opt, "null") == 0) { - this->consumer_admin_lock_ = 0; + this->consumer_lock_ = 0; } else if (ACE_OS::strcasecmp (opt, "thread") == 0) { - this->consumer_admin_lock_ = 1; + this->consumer_lock_ = 1; } else if (ACE_OS::strcasecmp (opt, "recursive") == 0) { - this->consumer_admin_lock_ = 2; + this->consumer_lock_ = 2; } else { ACE_ERROR ((LM_ERROR, "EC_Default_Factory - " - "unsupported consumer admin lock <%s>\n", + "unsupported consumer lock <%s>\n", opt)); } arg_shifter.consume_arg (); } } - else if (ACE_OS::strcasecmp (arg, "-ECSupplierAdminLock") == 0) + else if (ACE_OS::strcasecmp (arg, "-ECProxySupplierLock") == 0) { arg_shifter.consume_arg (); @@ -363,15 +362,15 @@ TAO_EC_Default_Factory::init (int argc, char* argv[]) char* opt = arg_shifter.get_current (); if (ACE_OS::strcasecmp (opt, "null") == 0) { - this->supplier_admin_lock_ = 0; + this->supplier_lock_ = 0; } else if (ACE_OS::strcasecmp (opt, "thread") == 0) { - this->supplier_admin_lock_ = 1; + this->supplier_lock_ = 1; } else if (ACE_OS::strcasecmp (opt, "recursive") == 0) { - this->supplier_admin_lock_ = 2; + this->supplier_lock_ = 2; } else { @@ -472,12 +471,36 @@ TAO_EC_Default_Factory::init (int argc, char* argv[]) } } + else if (ACE_OS::strcasecmp (arg, "-ECPushSupplierSet") == 0) + { + ACE_ERROR ((LM_ERROR, + "EC_Default_Factory - " + "obsolete option <%s>, ignored\n", arg)); + arg_shifter.consume_arg (); + } + + else if (ACE_OS::strcasecmp (arg, "-ECConsumerAdminLock") == 0) + { + ACE_ERROR ((LM_ERROR, + "EC_Default_Factory - " + "obsolete option <%s>, ignored\n", arg)); + arg_shifter.consume_arg (); + } + + else if (ACE_OS::strcasecmp (arg, "-ECSupplierAdminLock") == 0) + { + ACE_ERROR ((LM_ERROR, + "EC_Default_Factory - " + "obsolete option <%s>, ignored\n", arg)); + arg_shifter.consume_arg (); + } + else if (ACE_OS::strncmp (arg, "-EC", 3) == 0) { arg_shifter.consume_arg (); ACE_ERROR ((LM_ERROR, "EC_Default_Factory - " - "unknowns option <%s>\n", + "unknown option <%s>\n", arg)); } } @@ -662,92 +685,240 @@ TAO_EC_Default_Factory::destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy* delete x; } -TAO_EC_ProxyPushSupplier_Set* -TAO_EC_Default_Factory::create_proxy_push_supplier_set (TAO_EC_Event_Channel *) +TAO_EC_ProxyPushConsumer_Collection* +TAO_EC_Default_Factory::create_proxy_push_consumer_collection (TAO_EC_Event_Channel *) { - if (this->supplier_set_ == 0) - return new TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_SYNCH_MUTEX> (); - else if (this->supplier_set_ == 1) - return new TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH> (); - else if (this->supplier_set_ == 2) - return new TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_Null_Mutex> (); - return 0; -} - -void -TAO_EC_Default_Factory::destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set *x) -{ - delete x; -} + if (this->consumer_collection_ == 0x000) + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX> (); + else if (this->consumer_collection_ == 0x001) + return new TAO_EC_Copy_On_Read<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX> (); + /* + else if (this->consumer_collection_ == 0x002) + return new TAO_EC_Copy_On_Write<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX> (); + */ + else if (this->consumer_collection_ == 0x003) + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH> (); + else if (this->consumer_collection_ == 0x010) + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX> (); + else if (this->consumer_collection_ == 0x011) + return new TAO_EC_Copy_On_Read<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX> (); + /* + else if (this->consumer_collection_ == 0x012) + return new TAO_EC_Copy_On_Write<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX> (); + */ + else if (this->consumer_collection_ == 0x013) + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH> (); + else if (this->consumer_collection_ == 0x100) + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex> (); + else if (this->consumer_collection_ == 0x101) + return new TAO_EC_Copy_On_Read<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex> (); + /* + else if (this->consumer_collection_ == 0x102) + return new TAO_EC_Copy_On_Write<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex> (); + */ + else if (this->consumer_collection_ == 0x103) + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH> (); + else if (this->consumer_collection_ == 0x110) + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex> (); + else if (this->consumer_collection_ == 0x111) + return new TAO_EC_Copy_On_Read<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex> (); + /* + else if (this->consumer_collection_ == 0x112) + return new TAO_EC_Copy_On_Write<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex> (); + */ + else if (this->consumer_collection_ == 0x113) + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH> (); -ACE_Lock* -TAO_EC_Default_Factory::create_consumer_lock (void) -{ - if (this->consumer_lock_ == 0) - return new ACE_Lock_Adapter<ACE_Null_Mutex>; - else if (this->consumer_lock_ == 1) - return new ACE_Lock_Adapter<ACE_SYNCH_MUTEX> (); - else if (this->consumer_lock_ == 2) - return new ACE_Lock_Adapter<ACE_SYNCH_RECURSIVE_MUTEX> (); return 0; } void -TAO_EC_Default_Factory::destroy_consumer_lock (ACE_Lock* x) +TAO_EC_Default_Factory::destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection *x) { delete x; } -ACE_Lock* -TAO_EC_Default_Factory::create_supplier_lock (void) +TAO_EC_ProxyPushSupplier_Collection* +TAO_EC_Default_Factory::create_proxy_push_supplier_collection (TAO_EC_Event_Channel *) { - if (this->supplier_lock_ == 0) - return new ACE_Lock_Adapter<ACE_Null_Mutex>; - else if (this->supplier_lock_ == 1) - return new ACE_Lock_Adapter<ACE_SYNCH_MUTEX> (); - else if (this->supplier_lock_ == 2) - return new ACE_Lock_Adapter<ACE_SYNCH_RECURSIVE_MUTEX> (); + if (this->supplier_collection_ == 0x000) + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX> (); + else if (this->supplier_collection_ == 0x001) + return new TAO_EC_Copy_On_Read<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX> (); + /* + else if (this->supplier_collection_ == 0x002) + return new TAO_EC_Copy_On_Write<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX> (); + */ + else if (this->supplier_collection_ == 0x003) + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH> (); + else if (this->supplier_collection_ == 0x010) + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX> (); + else if (this->supplier_collection_ == 0x011) + return new TAO_EC_Copy_On_Read<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX> (); + /* + else if (this->supplier_collection_ == 0x012) + return new TAO_EC_Copy_On_Write<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX> (); + */ + else if (this->supplier_collection_ == 0x013) + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH> (); + else if (this->supplier_collection_ == 0x100) + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex> (); + else if (this->supplier_collection_ == 0x101) + return new TAO_EC_Copy_On_Read<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex> (); + /* + else if (this->supplier_collection_ == 0x102) + return new TAO_EC_Copy_On_Write<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex> (); + */ + else if (this->supplier_collection_ == 0x103) + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH> (); + else if (this->supplier_collection_ == 0x110) + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex> (); + else if (this->supplier_collection_ == 0x111) + return new TAO_EC_Copy_On_Read<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex> (); + /* + else if (this->supplier_collection_ == 0x112) + return new TAO_EC_Copy_On_Write<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex> (); + */ + else if (this->supplier_collection_ == 0x113) + return new TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH> (); + return 0; } void -TAO_EC_Default_Factory::destroy_supplier_lock (ACE_Lock* x) +TAO_EC_Default_Factory::destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection *x) { delete x; } ACE_Lock* -TAO_EC_Default_Factory::create_consumer_admin_lock (void) +TAO_EC_Default_Factory::create_consumer_lock (void) { - if (this->consumer_admin_lock_ == 0) + if (this->consumer_lock_ == 0) return new ACE_Lock_Adapter<ACE_Null_Mutex>; - else if (this->consumer_admin_lock_ == 1) + else if (this->consumer_lock_ == 1) return new ACE_Lock_Adapter<ACE_SYNCH_MUTEX> (); - else if (this->consumer_admin_lock_ == 2) + else if (this->consumer_lock_ == 2) return new ACE_Lock_Adapter<ACE_SYNCH_RECURSIVE_MUTEX> (); return 0; } void -TAO_EC_Default_Factory::destroy_consumer_admin_lock (ACE_Lock* x) +TAO_EC_Default_Factory::destroy_consumer_lock (ACE_Lock* x) { delete x; } ACE_Lock* -TAO_EC_Default_Factory::create_supplier_admin_lock (void) +TAO_EC_Default_Factory::create_supplier_lock (void) { - if (this->supplier_admin_lock_ == 0) + if (this->supplier_lock_ == 0) return new ACE_Lock_Adapter<ACE_Null_Mutex>; - else if (this->supplier_admin_lock_ == 1) + else if (this->supplier_lock_ == 1) return new ACE_Lock_Adapter<ACE_SYNCH_MUTEX> (); - else if (this->supplier_admin_lock_ == 2) + else if (this->supplier_lock_ == 2) return new ACE_Lock_Adapter<ACE_SYNCH_RECURSIVE_MUTEX> (); return 0; } void -TAO_EC_Default_Factory::destroy_supplier_admin_lock (ACE_Lock* x) +TAO_EC_Default_Factory::destroy_supplier_lock (ACE_Lock* x) { delete x; } @@ -814,18 +985,404 @@ ACE_FACTORY_DEFINE (TAO_ORBSVCS, TAO_EC_Default_Factory) #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +template class ACE_Node<ACE_Command_Base*>; +template class ACE_Unbounded_Queue<ACE_Command_Base*>; +template class ACE_Unbounded_Queue_Iterator<ACE_Command_Base*>; + +template class TAO_EC_Proxy_Collection<TAO_EC_ProxyPushConsumer>; +template class TAO_EC_Worker<TAO_EC_ProxyPushConsumer>; +template class TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>; +template class TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>; +template class ACE_Unbounded_Set<TAO_EC_ProxyPushConsumer *>; +template class ACE_Node<TAO_EC_ProxyPushConsumer *>; +template class ACE_Unbounded_Set_Iterator<TAO_EC_ProxyPushConsumer *>; +template class ACE_RB_Tree<TAO_EC_ProxyPushConsumer *, int, ACE_Less_Than<TAO_EC_ProxyPushConsumer *>, ACE_Null_Mutex>; +template class ACE_RB_Tree_Iterator<TAO_EC_ProxyPushConsumer *, int, ACE_Less_Than<TAO_EC_ProxyPushConsumer *>, ACE_Null_Mutex>; +template class ACE_RB_Tree_Reverse_Iterator<TAO_EC_ProxyPushConsumer *, int, ACE_Less_Than<TAO_EC_ProxyPushConsumer *>, ACE_Null_Mutex>; +template class ACE_RB_Tree_Iterator_Base<TAO_EC_ProxyPushConsumer *, int, ACE_Less_Than<TAO_EC_ProxyPushConsumer *>, ACE_Null_Mutex>; +template class ACE_RB_Tree_Node<TAO_EC_ProxyPushConsumer *, int>; + +template class TAO_EC_Proxy_Collection<TAO_EC_ProxyPushSupplier>; +template class TAO_EC_Worker<TAO_EC_ProxyPushSupplier>; +template class TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>; +template class TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>; +template class ACE_Unbounded_Set<TAO_EC_ProxyPushSupplier *>; +template class ACE_Node<TAO_EC_ProxyPushSupplier *>; +template class ACE_Unbounded_Set_Iterator<TAO_EC_ProxyPushSupplier *>; +template class ACE_RB_Tree<TAO_EC_ProxyPushSupplier *, int, ACE_Less_Than<TAO_EC_ProxyPushSupplier *>, ACE_Null_Mutex>; +template class ACE_RB_Tree_Iterator<TAO_EC_ProxyPushSupplier *, int, ACE_Less_Than<TAO_EC_ProxyPushSupplier *>, ACE_Null_Mutex>; +template class ACE_RB_Tree_Iterator_Base<TAO_EC_ProxyPushSupplier *, int, ACE_Less_Than<TAO_EC_ProxyPushSupplier *>, ACE_Null_Mutex>; +template class ACE_RB_Tree_Reverse_Iterator<TAO_EC_ProxyPushSupplier *, int, ACE_Less_Than<TAO_EC_ProxyPushSupplier *>, ACE_Null_Mutex>; +template class ACE_RB_Tree_Node<TAO_EC_ProxyPushSupplier *, int>; + #if defined (ACE_HAS_THREADS) -template class TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_SYNCH_MUTEX>; +// +// To avoid duplicate instantiations of templates we must put the MT +// versions on this #ifdef, otherwise the ACE_SYNCH* macros expand to +// the ACE_NULL* versions, duplicating the non-MT versions below. +// We *cannot* use explicit ACE_Synch classes because that will not +// compile in platforms without threads. +// +template class TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX>; +template class TAO_EC_Copy_On_Read<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX>; + /* +template class TAO_EC_Copy_On_Write<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX>; + */ +template class TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH>; +template class TAO_EC_Busy_Lock_Adapter< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH> >; +template class TAO_EC_Connected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Reconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Disconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Shutdown_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH> >; +template class TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX>; +template class TAO_EC_Copy_On_Read<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX>; + /* +template class TAO_EC_Copy_On_Write<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH_MUTEX>; + */ +template class TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH>; +template class TAO_EC_Busy_Lock_Adapter< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH> >; +template class TAO_EC_Connected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Reconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Disconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Shutdown_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_SYNCH> >; + +template class TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX>; +template class TAO_EC_Copy_On_Read<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX>; + /* +template class TAO_EC_Copy_On_Write<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX>; + */ +template class TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH>; +template class TAO_EC_Busy_Lock_Adapter< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH> >; +template class TAO_EC_Connected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Reconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Disconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Shutdown_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH> >; +template class TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX>; +template class TAO_EC_Copy_On_Read<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX>; + /* +template class TAO_EC_Copy_On_Write<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH_MUTEX>; + */ +template class TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH>; +template class TAO_EC_Busy_Lock_Adapter< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH> >; +template class TAO_EC_Connected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Reconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Disconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Shutdown_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_SYNCH> >; #endif /* ACE_HAS_THREADS */ -template class TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_Null_Mutex>; +template class TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex>; +template class TAO_EC_Copy_On_Read<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex>; + /* +template class TAO_EC_Copy_On_Write<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex>; + */ +template class TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH>; +template class TAO_EC_Busy_Lock_Adapter< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH> >; +template class TAO_EC_Connected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Reconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Disconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Shutdown_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH> >; +template class TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex>; +template class TAO_EC_Copy_On_Read<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex>; + /* +template class TAO_EC_Copy_On_Write<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex>; + */ +template class TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH>; +template class TAO_EC_Busy_Lock_Adapter< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH> >; +template class TAO_EC_Connected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Reconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Disconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushConsumer >; +template class TAO_EC_Shutdown_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_NULL_SYNCH> >; + +template class TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex>; +template class TAO_EC_Copy_On_Read<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex>; + /* +template class TAO_EC_Copy_On_Write<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex>; + */ +template class TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH>; +template class TAO_EC_Busy_Lock_Adapter< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH> >; +template class TAO_EC_Connected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Reconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Disconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Shutdown_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH> >; +template class TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex>; +template class TAO_EC_Copy_On_Read<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex>; + /* +template class TAO_EC_Copy_On_Write<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex>; + */ +template class TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH>; +template class TAO_EC_Busy_Lock_Adapter< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH> >; +template class TAO_EC_Connected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Reconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Disconnected_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH>,TAO_EC_ProxyPushSupplier >; +template class TAO_EC_Shutdown_Command< + TAO_EC_Delayed_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_RB_Tree_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_NULL_SYNCH> >; #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#pragma instantiate ACE_Node<ACE_Command_Base*> +#pragma instantiate ACE_Unbounded_Queue<ACE_Command_Base*> +#pragma instantiate ACE_Unbounded_Queue_Iterator<ACE_Command_Base*> +#pragma instantiate TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer> +#pragma instantiate TAO_EC_RB_Tree_Proxy_Set<TAO_EC_ProxyPushConsumer> +#pragma instantiate TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier> +#pragma instantiate TAO_EC_RB_Tree_Proxy_Set<TAO_EC_ProxyPushSupplier> + #if defined (ACE_HAS_THREADS) -#pragma instantiate TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_SYNCH_MUTEX> #endif /* ACE_HAS_THREADS */ -#pragma instantiate TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_Null_Mutex> - #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.h b/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.h index 45140d6e621..0e9ae6a5a82 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.h @@ -103,21 +103,20 @@ public: create_scheduling_strategy (TAO_EC_Event_Channel*); virtual void destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy*); - virtual TAO_EC_ProxyPushSupplier_Set* - create_proxy_push_supplier_set (TAO_EC_Event_Channel*); + virtual TAO_EC_ProxyPushConsumer_Collection* + create_proxy_push_consumer_collection (TAO_EC_Event_Channel*); virtual void - destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set*); + destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection*); + virtual TAO_EC_ProxyPushSupplier_Collection* + create_proxy_push_supplier_collection (TAO_EC_Event_Channel*); + virtual void + destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection*); virtual ACE_Lock* create_consumer_lock (void); virtual void destroy_consumer_lock (ACE_Lock*); virtual ACE_Lock* create_supplier_lock (void); virtual void destroy_supplier_lock (ACE_Lock*); - virtual ACE_Lock* create_consumer_admin_lock (void); - virtual void destroy_consumer_admin_lock (ACE_Lock*); - virtual ACE_Lock* create_supplier_admin_lock (void); - virtual void destroy_supplier_admin_lock (ACE_Lock*); - virtual TAO_EC_ConsumerControl* create_consumer_control (TAO_EC_Event_Channel*); virtual void @@ -134,11 +133,10 @@ private: int timeout_; int observer_; int scheduling_; - int supplier_set_; + int consumer_collection_; + int supplier_collection_; int consumer_lock_; int supplier_lock_; - int consumer_admin_lock_; - int supplier_admin_lock_; // Several flags to control the kind of object created. int dispatching_threads_; diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.i b/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.i index aed3212d31a..7e80488bf44 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Default_Factory.i @@ -8,11 +8,10 @@ TAO_EC_Default_Factory::TAO_EC_Default_Factory (void) timeout_ (TAO_EC_DEFAULT_TIMEOUT), observer_ (TAO_EC_DEFAULT_OBSERVER), scheduling_ (TAO_EC_DEFAULT_SCHEDULING), - supplier_set_ (TAO_EC_DEFAULT_SUPPLIER_SET), + consumer_collection_ (TAO_EC_DEFAULT_CONSUMER_COLLECTION), + supplier_collection_ (TAO_EC_DEFAULT_SUPPLIER_COLLECTION), consumer_lock_ (TAO_EC_DEFAULT_CONSUMER_LOCK), supplier_lock_ (TAO_EC_DEFAULT_SUPPLIER_LOCK), - consumer_admin_lock_ (TAO_EC_DEFAULT_CONSUMER_ADMIN_LOCK), - supplier_admin_lock_ (TAO_EC_DEFAULT_SUPPLIER_ADMIN_LOCK), dispatching_threads_ (TAO_EC_DEFAULT_DISPATCHING_THREADS), dispatching_threads_flags_ (TAO_EC_DEFAULT_DISPATCHING_THREADS_FLAGS), dispatching_threads_priority_ (TAO_EC_DEFAULT_DISPATCHING_THREADS_PRIORITY), diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Defaults.h b/TAO/orbsvcs/orbsvcs/Event/EC_Defaults.h index fd41158d070..ed2872ecad8 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Defaults.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Defaults.h @@ -87,9 +87,13 @@ # define TAO_EC_DEFAULT_SCHEDULING 0 /* null */ #endif /* TAO_EC_DEFAULT_SCHEDULING */ -#ifndef TAO_EC_DEFAULT_SUPPLIER_SET -# define TAO_EC_DEFAULT_SUPPLIER_SET 1 /* delayed MT-safe */ -#endif /* TAO_EC_DEFAULT_SUPPLIER_SET */ +#ifndef TAO_EC_DEFAULT_CONSUMER_COLLECTION +# define TAO_EC_DEFAULT_CONSUMER_COLLECTION 0x101 /* copy-on-read MT-safe */ +#endif /* TAO_EC_DEFAULT_CONSUMER_COLLECTION */ + +#ifndef TAO_EC_DEFAULT_SUPPLIER_COLLECTION +# define TAO_EC_DEFAULT_SUPPLIER_COLLECTION 0x101 /* copy-on-read MT-safe */ +#endif /* TAO_EC_DEFAULT_SUPPLIER_COLLECTION */ #ifndef TAO_EC_DEFAULT_CONSUMER_LOCK # define TAO_EC_DEFAULT_CONSUMER_LOCK 1 /* thread */ @@ -99,14 +103,6 @@ # define TAO_EC_DEFAULT_SUPPLIER_LOCK 1 /* thread */ #endif /* TAO_EC_DEFAULT_SUPPLIER_LOCK */ -#ifndef TAO_EC_DEFAULT_CONSUMER_ADMIN_LOCK -# define TAO_EC_DEFAULT_CONSUMER_ADMIN_LOCK 1 /* thread */ -#endif /* TAO_EC_DEFAULT_CONSUMER_ADMIN_LOCK */ - -#ifndef TAO_EC_DEFAULT_SUPPLIER_ADMIN_LOCK -# define TAO_EC_DEFAULT_SUPPLIER_ADMIN_LOCK 1 /* thread */ -#endif /* TAO_EC_DEFAULT_SUPPLIER_ADMIN_LOCK */ - #ifndef TAO_EC_DEFAULT_DISPATCHING_THREADS # define TAO_EC_DEFAULT_DISPATCHING_THREADS 1 /* */ #endif /* TAO_EC_DEFAULT_DISPATCHING_THREADS */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.cpp index ace322a364d..d8d00577691 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.cpp @@ -83,7 +83,7 @@ TAO_EC_Dispatch_Command::~TAO_EC_Dispatch_Command (void) // **************************************************************** int -TAO_EC_Shutdown_Command::execute (CORBA::Environment&) +TAO_EC_Shutdown_Task_Command::execute (CORBA::Environment&) { return -1; } diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.h b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.h index 3133fcdf1c4..a07b4684622 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.h @@ -84,10 +84,10 @@ public: // **************************************************************** -class TAO_ORBSVCS_Export TAO_EC_Shutdown_Command : public TAO_EC_Dispatch_Command +class TAO_ORBSVCS_Export TAO_EC_Shutdown_Task_Command : public TAO_EC_Dispatch_Command { public: - TAO_EC_Shutdown_Command (ACE_Allocator *mb_allocator = 0); + TAO_EC_Shutdown_Task_Command (ACE_Allocator *mb_allocator = 0); // Constructor virtual int execute (CORBA::Environment&); diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.i b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.i index d7bd3d86dbc..1fc7da1701e 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Dispatching_Task.i @@ -26,7 +26,8 @@ TAO_EC_Dispatch_Command::TAO_EC_Dispatch_Command (ACE_Data_Block *data_block, // **************************************************************** ACE_INLINE -TAO_EC_Shutdown_Command::TAO_EC_Shutdown_Command (ACE_Allocator *mb_allocator) +TAO_EC_Shutdown_Task_Command:: + TAO_EC_Shutdown_Task_Command (ACE_Allocator *mb_allocator) : TAO_EC_Dispatch_Command (mb_allocator) { } diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.h b/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.h index f147d595397..1231331cb9c 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.h @@ -158,9 +158,17 @@ public: void destroy_proxy_push_consumer (TAO_EC_ProxyPushConsumer*); // Create and destroy a ProxyPushConsumer - TAO_EC_ProxyPushSupplier_Set* create_proxy_push_supplier_set (void); - void destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set*); - // Create and destroy a ProxyPushSupplier_Set + TAO_EC_ProxyPushSupplier_Collection* + create_proxy_push_supplier_collection (void); + void destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection*); + // Create and destroy a the collections used to store + // ProxyPushSuppliers + + TAO_EC_ProxyPushConsumer_Collection* + create_proxy_push_consumer_collection (void); + void destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection*); + // Create and destroy a the collections used to store + // ProxyPushConsumers PortableServer::POA_ptr supplier_poa (void); PortableServer::POA_ptr consumer_poa (void); @@ -173,13 +181,6 @@ public: // Locking strategies for the ProxyPushConsumer and // ProxyPushSupplier objects - ACE_Lock* create_consumer_admin_lock (void); - void destroy_consumer_admin_lock (ACE_Lock*); - ACE_Lock* create_supplier_admin_lock (void); - void destroy_supplier_admin_lock (ACE_Lock*); - // Locking strategies for the ConsumerAdmin and SupplierAdmin - // objects - virtual void connected (TAO_EC_ProxyPushConsumer*, CORBA::Environment&); virtual void reconnected (TAO_EC_ProxyPushConsumer*, diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.i b/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.i index e401155157a..b06d45ecba1 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Event_Channel.i @@ -75,16 +75,28 @@ TAO_EC_Event_Channel::create_proxy_push_consumer (void) return this->factory_->create_proxy_push_consumer (this); } -ACE_INLINE TAO_EC_ProxyPushSupplier_Set* -TAO_EC_Event_Channel::create_proxy_push_supplier_set (void) +ACE_INLINE TAO_EC_ProxyPushConsumer_Collection* +TAO_EC_Event_Channel::create_proxy_push_consumer_collection (void) { - return this->factory_->create_proxy_push_supplier_set (this); + return this->factory_->create_proxy_push_consumer_collection (this); } ACE_INLINE void -TAO_EC_Event_Channel::destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set* x) +TAO_EC_Event_Channel::destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection* x) { - this->factory_->destroy_proxy_push_supplier_set (x); + this->factory_->destroy_proxy_push_consumer_collection (x); +} + +ACE_INLINE TAO_EC_ProxyPushSupplier_Collection* +TAO_EC_Event_Channel::create_proxy_push_supplier_collection (void) +{ + return this->factory_->create_proxy_push_supplier_collection (this); +} + +ACE_INLINE void +TAO_EC_Event_Channel::destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection* x) +{ + this->factory_->destroy_proxy_push_supplier_collection (x); } ACE_INLINE void @@ -129,30 +141,6 @@ TAO_EC_Event_Channel::destroy_supplier_lock (ACE_Lock* x) this->factory_->destroy_supplier_lock (x); } -ACE_INLINE ACE_Lock* -TAO_EC_Event_Channel::create_consumer_admin_lock (void) -{ - return this->factory_->create_consumer_admin_lock (); -} - -ACE_INLINE void -TAO_EC_Event_Channel::destroy_consumer_admin_lock (ACE_Lock* x) -{ - this->factory_->destroy_consumer_admin_lock (x); -} - -ACE_INLINE ACE_Lock* -TAO_EC_Event_Channel::create_supplier_admin_lock (void) -{ - return this->factory_->create_supplier_admin_lock (); -} - -ACE_INLINE void -TAO_EC_Event_Channel::destroy_supplier_admin_lock (ACE_Lock* x) -{ - this->factory_->destroy_supplier_admin_lock (x); -} - ACE_INLINE int TAO_EC_Event_Channel::consumer_reconnect (void) const { diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Factory.h b/TAO/orbsvcs/orbsvcs/Event/EC_Factory.h index 5e4aba26c9f..8a999126614 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Factory.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Factory.h @@ -46,12 +46,15 @@ class TAO_EC_SupplierAdmin; class TAO_EC_ProxyPushConsumer; class TAO_EC_ProxyPushSupplier; class TAO_EC_ObserverStrategy; -class TAO_EC_ProxyPushSupplier_Set; +template<class PROXY> class TAO_EC_Proxy_Collection; class TAO_EC_Timeout_Generator; class TAO_EC_Scheduling_Strategy; class TAO_EC_ConsumerControl; class TAO_EC_SupplierControl; +typedef TAO_EC_Proxy_Collection<TAO_EC_ProxyPushConsumer> TAO_EC_ProxyPushConsumer_Collection; +typedef TAO_EC_Proxy_Collection<TAO_EC_ProxyPushSupplier> TAO_EC_ProxyPushSupplier_Collection; + class TAO_ORBSVCS_Export TAO_EC_Factory : public ACE_Service_Object { // = TITLE @@ -130,11 +133,17 @@ public: destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy*) = 0; // Create and destroy the observer strategy. - virtual TAO_EC_ProxyPushSupplier_Set* - create_proxy_push_supplier_set (TAO_EC_Event_Channel*) = 0; + virtual TAO_EC_ProxyPushConsumer_Collection* + create_proxy_push_consumer_collection (TAO_EC_Event_Channel*) = 0; + virtual void + destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection*) = 0; + // Create and destroy a collection of TAO_EC_ProxyPushConsumers + + virtual TAO_EC_ProxyPushSupplier_Collection* + create_proxy_push_supplier_collection (TAO_EC_Event_Channel*) = 0; virtual void - destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set*) = 0; - // Create and destroy a ProxyPushSupplier_Set + destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection*) = 0; + // Create and destroy a collection of TAO_EC_ProxyPushSuppliers virtual ACE_Lock* create_consumer_lock (void) = 0; virtual void destroy_consumer_lock (ACE_Lock*) = 0; @@ -143,13 +152,6 @@ public: // Create and destroy the locking strategies for both // ProxyPushConsumers and ProxyPushSuppliers - virtual ACE_Lock* create_consumer_admin_lock (void) = 0; - virtual void destroy_consumer_admin_lock (ACE_Lock*) = 0; - virtual ACE_Lock* create_supplier_admin_lock (void) = 0; - virtual void destroy_supplier_admin_lock (ACE_Lock*) = 0; - // Create and destroy the locking strategies for both - // ConsumerAdmin and SupplierAdmin classes. - virtual TAO_EC_ConsumerControl* create_consumer_control (TAO_EC_Event_Channel*) = 0; virtual void diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_MT_Dispatching.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_MT_Dispatching.cpp index 3984307b4d6..d6d9667f479 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_MT_Dispatching.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_MT_Dispatching.cpp @@ -58,7 +58,7 @@ TAO_EC_MT_Dispatching::shutdown (void) for (int i = 0; i < this->nthreads_; ++i) { - this->task_.putq (new TAO_EC_Shutdown_Command); + this->task_.putq (new TAO_EC_Shutdown_Task_Command); } this->thread_manager_.wait (); } diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Null_Factory.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Null_Factory.cpp index a8a6c00ee51..e168ef2773a 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Null_Factory.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Null_Factory.cpp @@ -10,7 +10,8 @@ #include "EC_ProxySupplier.h" #include "EC_ObserverStrategy.h" #include "EC_Null_Scheduling.h" -#include "EC_ProxyPushSupplier_Set_T.h" +#include "EC_Proxy_Collection.h" +#include "EC_Concrete_Proxy_Set.h" #include "EC_Reactive_Timeout_Generator.h" #include "EC_ConsumerControl.h" #include "EC_SupplierControl.h" @@ -150,62 +151,56 @@ TAO_EC_Null_Factory::destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy* x) delete x; } -TAO_EC_ProxyPushSupplier_Set* -TAO_EC_Null_Factory::create_proxy_push_supplier_set (TAO_EC_Event_Channel *) +TAO_EC_ProxyPushConsumer_Collection* +TAO_EC_Null_Factory::create_proxy_push_consumer_collection (TAO_EC_Event_Channel *) { - return new TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_Null_Mutex> (); + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushConsumer, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushConsumer>::Iterator, + ACE_Null_Mutex> (); } void -TAO_EC_Null_Factory::destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set *x) +TAO_EC_Null_Factory::destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection *x) { delete x; } -ACE_Lock* -TAO_EC_Null_Factory::create_consumer_lock (void) -{ - return new ACE_Lock_Adapter<ACE_Null_Mutex> (); -} - -void -TAO_EC_Null_Factory::destroy_consumer_lock (ACE_Lock* x) -{ - delete x; -} - -ACE_Lock* -TAO_EC_Null_Factory::create_supplier_lock (void) +TAO_EC_ProxyPushSupplier_Collection* +TAO_EC_Null_Factory::create_proxy_push_supplier_collection (TAO_EC_Event_Channel *) { - return new ACE_Lock_Adapter<ACE_Null_Mutex> (); + return new TAO_EC_Immediate_Changes<TAO_EC_ProxyPushSupplier, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>, + TAO_EC_List_Based_Proxy_Set<TAO_EC_ProxyPushSupplier>::Iterator, + ACE_Null_Mutex> (); } void -TAO_EC_Null_Factory::destroy_supplier_lock (ACE_Lock* x) +TAO_EC_Null_Factory::destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection *x) { delete x; } ACE_Lock* -TAO_EC_Null_Factory::create_consumer_admin_lock (void) +TAO_EC_Null_Factory::create_consumer_lock (void) { return new ACE_Lock_Adapter<ACE_Null_Mutex> (); } void -TAO_EC_Null_Factory::destroy_consumer_admin_lock (ACE_Lock* x) +TAO_EC_Null_Factory::destroy_consumer_lock (ACE_Lock* x) { delete x; } ACE_Lock* -TAO_EC_Null_Factory::create_supplier_admin_lock (void) +TAO_EC_Null_Factory::create_supplier_lock (void) { return new ACE_Lock_Adapter<ACE_Null_Mutex> (); } void -TAO_EC_Null_Factory::destroy_supplier_admin_lock (ACE_Lock* x) +TAO_EC_Null_Factory::destroy_supplier_lock (ACE_Lock* x) { delete x; } diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Null_Factory.h b/TAO/orbsvcs/orbsvcs/Event/EC_Null_Factory.h index 371def0ace7..a38bffbd643 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Null_Factory.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Null_Factory.h @@ -93,21 +93,20 @@ public: create_scheduling_strategy (TAO_EC_Event_Channel*); virtual void destroy_scheduling_strategy (TAO_EC_Scheduling_Strategy*); - virtual TAO_EC_ProxyPushSupplier_Set* - create_proxy_push_supplier_set (TAO_EC_Event_Channel*); + virtual TAO_EC_ProxyPushConsumer_Collection* + create_proxy_push_consumer_collection (TAO_EC_Event_Channel*); virtual void - destroy_proxy_push_supplier_set (TAO_EC_ProxyPushSupplier_Set*); + destroy_proxy_push_consumer_collection (TAO_EC_ProxyPushConsumer_Collection*); + virtual TAO_EC_ProxyPushSupplier_Collection* + create_proxy_push_supplier_collection (TAO_EC_Event_Channel*); + virtual void + destroy_proxy_push_supplier_collection (TAO_EC_ProxyPushSupplier_Collection*); virtual ACE_Lock* create_consumer_lock (void); virtual void destroy_consumer_lock (ACE_Lock*); virtual ACE_Lock* create_supplier_lock (void); virtual void destroy_supplier_lock (ACE_Lock*); - virtual ACE_Lock* create_consumer_admin_lock (void); - virtual void destroy_consumer_admin_lock (ACE_Lock*); - virtual ACE_Lock* create_supplier_admin_lock (void); - virtual void destroy_supplier_admin_lock (ACE_Lock*); - virtual TAO_EC_ConsumerControl* create_consumer_control (TAO_EC_Event_Channel*); virtual void diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.cpp index 012486f7628..0b23e6bbb61 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.cpp @@ -314,53 +314,21 @@ TAO_EC_Basic_ObserverStrategy::fill_qos ( { Headers headers; - { - ACE_GUARD_THROW_EX (TAO_EC_ConsumerAdmin::Busy_Lock, - ace_mon, this->event_channel_->consumer_admin ()->busy_lock (), - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - TAO_EC_ConsumerAdmin::SupplierSetIterator end = - this->event_channel_->consumer_admin ()->end (); - for (TAO_EC_ConsumerAdmin::SupplierSetIterator i = - this->event_channel_->consumer_admin ()->begin (); - i != end; - ++i) - { - TAO_EC_ProxyPushSupplier* supplier = *i; - - const RtecEventChannelAdmin::ConsumerQOS& sub = - supplier->subscriptions (); - if (sub.is_gateway) - continue; - for (CORBA::ULong j = 0; j < sub.dependencies.length (); ++j) - { - const RtecEventComm::Event& event = - sub.dependencies[j].event; - RtecEventComm::EventType type = event.header.type; - - if (0 < type && type < ACE_ES_EVENT_UNDEFINED) - continue; - headers.insert (event.header, 1); - } - } - } - CORBA::ULong count = 1; - HeadersIterator i (headers); - for (i.first (); !i.is_done (); i.next ()) - { - count++; - } + TAO_EC_Accumulate_Supplier_Headers worker (headers); + this->event_channel_->consumer_admin ()->for_each (&worker, ACE_TRY_ENV); + ACE_CHECK; RtecEventChannelAdmin::DependencySet& dep = qos.dependencies; - dep.length (count); + dep.length (headers.current_size () + 1); dep[0].event.header.type = ACE_ES_DISJUNCTION_DESIGNATOR; dep[0].event.header.source = 0; dep[0].event.header.creation_time = ORBSVCS_Time::zero (); dep[0].rt_info = 0; - count = 1; + + CORBA::ULong count = 1; + HeadersIterator i (headers); for (i.first (); !i.is_done (); i.next ()) { qos.dependencies[count++].event.header = *i.key (); @@ -370,50 +338,71 @@ TAO_EC_Basic_ObserverStrategy::fill_qos ( void TAO_EC_Basic_ObserverStrategy::fill_qos ( RtecEventChannelAdmin::SupplierQOS &qos, - CORBA::Environment &) + CORBA::Environment &ACE_TRY_ENV) { Headers headers; - { - // @@ TODO locking in the consumer admin? - TAO_EC_SupplierAdmin::ConsumerSetIterator end = - this->event_channel_->supplier_admin ()->end (); - for (TAO_EC_SupplierAdmin::ConsumerSetIterator i = - this->event_channel_->supplier_admin ()->begin (); - i != end; - ++i) - { - TAO_EC_ProxyPushConsumer* consumer = *i; - const RtecEventChannelAdmin::SupplierQOS& pub = - consumer->publications (); - if (pub.is_gateway) - continue; - for (CORBA::ULong j = 0; j < pub.publications.length (); ++j) - { - const RtecEventComm::Event& event = - pub.publications[j].event; - RtecEventComm::EventType type = event.header.type; - - if (0 < type && type < ACE_ES_EVENT_UNDEFINED) - continue; - headers.insert (event.header, 1); - } - } - } + TAO_EC_Accumulate_Consumer_Headers worker (headers); + this->event_channel_->supplier_admin ()->for_each (&worker, + ACE_TRY_ENV); + ACE_CHECK; + + qos.publications.length (headers.current_size ()); + CORBA::ULong count = 0; HeadersIterator i (headers); for (i.first (); !i.is_done (); i.next ()) { - count++; + qos.publications[count++].event.header = *i.key (); } - qos.publications.length (count); - count = 0; - for (i.first (); !i.is_done (); i.next ()) +} + +// **************************************************************** + +void +TAO_EC_Accumulate_Supplier_Headers::work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &) +{ + const RtecEventChannelAdmin::ConsumerQOS& sub = + supplier->subscriptions (); + if (sub.is_gateway) + return; + for (CORBA::ULong j = 0; j < sub.dependencies.length (); ++j) { - qos.publications[count++].event.header = *i.key (); + const RtecEventComm::Event& event = + sub.dependencies[j].event; + RtecEventComm::EventType type = event.header.type; + + if (0 < type && type < ACE_ES_EVENT_UNDEFINED) + continue; + this->headers_.insert (event.header, 1); } } +// **************************************************************** + +void +TAO_EC_Accumulate_Consumer_Headers::work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &) +{ + const RtecEventChannelAdmin::SupplierQOS& pub = + consumer->publications (); + if (pub.is_gateway) + return; + for (CORBA::ULong j = 0; j < pub.publications.length (); ++j) + { + const RtecEventComm::Event& event = + pub.publications[j].event; + RtecEventComm::EventType type = event.header.type; + + if (0 < type && type < ACE_ES_EVENT_UNDEFINED) + continue; + this->headers_.insert (event.header, 1); + } +} + +// **************************************************************** + #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Map_Manager<RtecEventChannelAdmin::Observer_Handle,TAO_EC_Basic_ObserverStrategy::Observer_Entry,ACE_Null_Mutex>; diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.h b/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.h index d3b6b792e83..9ab3ed7b0d2 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.h @@ -25,13 +25,14 @@ #ifndef TAO_EC_OBSERVERSTRATEGY_H #define TAO_EC_OBSERVERSTRATEGY_H -#include "ace/Map_Manager.h" +#include "EC_Worker.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ #include "ace/RB_Tree.h" +#include "ace/Map_Manager.h" #include "orbsvcs/RtecEventChannelAdminC.h" class ACE_Lock; @@ -246,6 +247,38 @@ protected: typedef ACE_RB_Tree_Iterator<RtecEventComm::EventHeader,int,Header_Compare,ACE_Null_Mutex> HeadersIterator; }; +// **************************************************************** + +class TAO_EC_Accumulate_Supplier_Headers : public TAO_EC_Worker<TAO_EC_ProxyPushSupplier> +{ +public: + TAO_EC_Accumulate_Supplier_Headers (TAO_EC_Basic_ObserverStrategy::Headers &headers); + // Constructor + + virtual void work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_Basic_ObserverStrategy::Headers &headers_; +}; + +// **************************************************************** + +class TAO_EC_Accumulate_Consumer_Headers : public TAO_EC_Worker<TAO_EC_ProxyPushConsumer> +{ +public: + TAO_EC_Accumulate_Consumer_Headers (TAO_EC_Basic_ObserverStrategy::Headers &headers); + // Constructor + + virtual void work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_Basic_ObserverStrategy::Headers &headers_; +}; + + + #if defined (__ACE_INLINE__) #include "EC_ObserverStrategy.i" #endif /* __ACE_INLINE__ */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.i b/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.i index 07836b8e4d1..b426368911e 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_ObserverStrategy.i @@ -45,3 +45,21 @@ TAO_EC_Basic_ObserverStrategy:: handle_generator_ (1) { } + +// **************************************************************** + +ACE_INLINE +TAO_EC_Accumulate_Supplier_Headers:: + TAO_EC_Accumulate_Supplier_Headers (TAO_EC_Basic_ObserverStrategy::Headers &h) + : headers_ (h) +{ +} + +// **************************************************************** + +ACE_INLINE +TAO_EC_Accumulate_Consumer_Headers:: + TAO_EC_Accumulate_Consumer_Headers (TAO_EC_Basic_ObserverStrategy::Headers &h) + : headers_ (h) +{ +} diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp index 3fbd578021f..8cf9e21d8de 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.cpp @@ -2,10 +2,10 @@ #include "EC_Per_Supplier_Filter.h" #include "EC_Event_Channel.h" -#include "EC_ProxyPushSupplier_Set.h" #include "EC_ProxySupplier.h" #include "EC_ProxyConsumer.h" #include "EC_Scheduling_Strategy.h" +#include "EC_Proxy_Collection.h" #include "EC_QOS_Info.h" #include "orbsvcs/Event_Service_Constants.h" @@ -21,16 +21,19 @@ TAO_EC_Per_Supplier_Filter:: consumer_ (0), refcnt_ (1) { - this->supplier_set_ = - this->event_channel_->create_proxy_push_supplier_set (); - this->supplier_set_->busy_hwm (this->event_channel_->busy_hwm ()); - this->supplier_set_->max_write_delay (this->event_channel_->max_write_delay ()); + this->collection_ = + this->event_channel_->create_proxy_push_supplier_collection (); + // @@ + // @@ this->collection_->busy_hwm (this->event_channel_->busy_hwm ()); + // @@ this->collection_->max_write_delay ( + // @@ this->event_channel_->max_write_delay () + // @@ ); } TAO_EC_Per_Supplier_Filter::~TAO_EC_Per_Supplier_Filter (void) { - this->event_channel_->destroy_proxy_push_supplier_set (this->supplier_set_); - this->supplier_set_ = 0; + this->event_channel_->destroy_proxy_push_supplier_collection (this->collection_); + this->collection_ = 0; } void @@ -89,7 +92,7 @@ TAO_EC_Per_Supplier_Filter::connected (TAO_EC_ProxyPushSupplier* supplier, if (supplier->can_match (event.header)) { // ACE_DEBUG ((LM_DEBUG, " matched %x\n", supplier)); - this->supplier_set_->connected (supplier, ACE_TRY_ENV); + this->collection_->connected (supplier, ACE_TRY_ENV); return; } } @@ -118,24 +121,24 @@ TAO_EC_Per_Supplier_Filter::reconnected (TAO_EC_ProxyPushSupplier* supplier, if (supplier->can_match (event.header)) { // ACE_DEBUG ((LM_DEBUG, " matched %x\n", supplier)); - this->supplier_set_->connected (supplier, ACE_TRY_ENV); + this->collection_->connected (supplier, ACE_TRY_ENV); return; } } - this->supplier_set_->disconnected (supplier, ACE_TRY_ENV); + this->collection_->disconnected (supplier, ACE_TRY_ENV); } void TAO_EC_Per_Supplier_Filter::disconnected (TAO_EC_ProxyPushSupplier* supplier, CORBA::Environment &ACE_TRY_ENV) { - this->supplier_set_->disconnected (supplier, ACE_TRY_ENV); + this->collection_->disconnected (supplier, ACE_TRY_ENV); } void TAO_EC_Per_Supplier_Filter::shutdown (CORBA::Environment &ACE_TRY_ENV) { - this->supplier_set_->shutdown (ACE_TRY_ENV); + this->collection_->shutdown (ACE_TRY_ENV); } void @@ -170,29 +173,14 @@ TAO_EC_Per_Supplier_Filter::push (const RtecEventComm::EventSet& event, } // We don't use the consumer_ field anymore, just the - // supplier_set_, and that one is safe until we reach the + // collection_, and that one is safe until we reach the // destructor. However, the caller has to increase the // reference count before calling us, i.e. we won't be destroyed // until push() returns. - ACE_GUARD_THROW_EX (TAO_EC_ProxyPushSupplier_Set::Busy_Lock, - ace_mon, this->supplier_set_->busy_lock (), - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); + TAO_EC_Filter_Worker worker (single_event, event_info); + this->collection_->for_each (&worker, ACE_TRY_ENV); ACE_CHECK; - - TAO_EC_ProxyPushSupplier_Set::SupplierSetIterator end = - this->supplier_set_->end (); - - for (TAO_EC_ProxyPushSupplier_Set::SupplierSetIterator i = - this->supplier_set_->begin (); - i != end; - ++i) - { - TAO_EC_QOS_Info qos_info = event_info; - - (*i)->filter (single_event, qos_info, ACE_TRY_ENV); - ACE_CHECK; - } } } diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h index 289d16a9969..09cf807346c 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.h @@ -32,7 +32,7 @@ # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ -class TAO_EC_ProxyPushSupplier_Set; +template<class PROXY> class TAO_EC_Proxy_Collection; class TAO_ORBSVCS_Export TAO_EC_Per_Supplier_Filter : public TAO_EC_Supplier_Filter { @@ -76,9 +76,9 @@ private: TAO_EC_ProxyPushConsumer* consumer_; // The proxy for the supplier we are bound to. - TAO_EC_ProxyPushSupplier_Set* supplier_set_; - // Keep the list of proxies for the consumers that may be interested - // in our events. + TAO_EC_Proxy_Collection<TAO_EC_ProxyPushSupplier>* collection_; + // Keep the collection of proxies for the consumers that may be + // interested in our events. CORBA::ULong refcnt_; // Reference counting diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.i b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.i index f1fc6e2687b..5a13d548d35 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Per_Supplier_Filter.i @@ -6,4 +6,3 @@ TAO_EC_Per_Supplier_Filter_Builder (TAO_EC_Event_Channel* ec) : event_channel_ (ec) { } - diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Priority_Dispatching.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Priority_Dispatching.cpp index 96911d289e7..e7439ea9286 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Priority_Dispatching.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Priority_Dispatching.cpp @@ -94,7 +94,7 @@ TAO_EC_Priority_Dispatching::shutdown (void) return; for (int i = 0; i < this->ntasks_; ++i) - this->tasks_[i]->putq (new TAO_EC_Shutdown_Command); + this->tasks_[i]->putq (new TAO_EC_Shutdown_Task_Command); this->thread_manager_.wait (); diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp deleted file mode 100644 index 7aaf611aff4..00000000000 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// $Id$ - -#include "EC_ProxyPushSupplier_Set.h" -#include "EC_Defaults.h" -#include "EC_ProxySupplier.h" -#include "EC_Command.h" - -#if ! defined (__ACE_INLINE__) -#include "EC_ProxyPushSupplier_Set.i" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(Event, EC_ProxyPushSupplier_Set, "$Id$") - -TAO_EC_ProxyPushSupplier_Set::TAO_EC_ProxyPushSupplier_Set (void) - : busy_lock_ (this), - busy_hwm_ (TAO_EC_DEFAULT_BUSY_HWM), - max_write_delay_ (TAO_EC_DEFAULT_MAX_WRITE_DELAY) -{ -} - -TAO_EC_ProxyPushSupplier_Set::~TAO_EC_ProxyPushSupplier_Set (void) -{ -} - -void -TAO_EC_ProxyPushSupplier_Set::connected_i ( - TAO_EC_ProxyPushSupplier *supplier, - CORBA::Environment &ACE_TRY_ENV) -{ - int r = this->all_suppliers_.insert (supplier); - if (r == 0) - return; - if (r == 1) - { - // The supplier was already on the list, must decrement reference - // count - supplier->_decr_refcnt (); - return; - } - // @@ We should throw a user exception - ACE_THROW (CORBA::NO_MEMORY ()); -} - -void -TAO_EC_ProxyPushSupplier_Set::disconnected_i ( - TAO_EC_ProxyPushSupplier *supplier, - CORBA::Environment &) -{ - if (this->all_suppliers_.remove (supplier) != 0) - return;// @@ rasise something? - supplier->_decr_refcnt (); -} - -void -TAO_EC_ProxyPushSupplier_Set::shutdown_i ( - CORBA::Environment &) -{ - SupplierSetIterator end = this->end (); - for (SupplierSetIterator i = this->begin (); i != end; ++i) - { - (*i)->_decr_refcnt (); - } - this->all_suppliers_.reset (); -} - -void -TAO_EC_ProxyPushSupplier_Set::execute_delayed_operations (void) -{ -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - -template class ACE_Node<TAO_EC_ProxyPushSupplier*>; -template class ACE_Unbounded_Set<TAO_EC_ProxyPushSupplier*>; -template class ACE_Unbounded_Set_Iterator<TAO_EC_ProxyPushSupplier*>; -template class ACE_Guard<TAO_EC_Busy_Lock_Adapter<TAO_EC_ProxyPushSupplier_Set> >; -template class TAO_EC_Busy_Lock_Adapter<TAO_EC_ProxyPushSupplier_Set>; -template class TAO_EC_Connected_Command<TAO_EC_ProxyPushSupplier_Set,TAO_EC_ProxyPushSupplier>; -template class TAO_EC_Disconnected_Command<TAO_EC_ProxyPushSupplier_Set,TAO_EC_ProxyPushSupplier>; -template class TAO_EC_Shutdown_Command_T<TAO_EC_ProxyPushSupplier_Set>; - -#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) - -#pragma instantiate ACE_Node<TAO_EC_ProxyPushSupplier*> -#pragma instantiate ACE_Unbounded_Set<TAO_EC_ProxyPushSupplier*> -#pragma instantiate ACE_Unbounded_Set_Iterator<TAO_EC_ProxyPushSupplier*> -#pragma instantiate TAO_EC_Busy_Lock_Adapter<TAO_EC_ProxyPushSupplier_Set> -#pragma instantiate ACE_Guard<TAO_EC_Busy_Lock_Adapter<TAO_EC_ProxyPushSupplier_Set> > -#pragma instantiate TAO_EC_Connected_Command<TAO_EC_ProxyPushSupplier_Set,TAO_EC_ProxyPushSupplier> -#pragma instantiate TAO_EC_Disconnected_Command<TAO_EC_ProxyPushSupplier_Set,TAO_EC_ProxyPushSupplier> -#pragma instantiate TAO_EC_Shutdown_Command_T<TAO_EC_ProxyPushSupplier_Set> - -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.h b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.h deleted file mode 100644 index 3e3cb741687..00000000000 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.h +++ /dev/null @@ -1,274 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ -// -// ============================================================================ -// -// = LIBRARY -// ORBSVCS Real-time Event Channel -// -// = FILENAME -// EC_ProxyPushSupplier_Set -// -// = AUTHOR -// Carlos O'Ryan (coryan@cs.wustl.edu) -// -// = CREDITS -// Based on previous work by Tim Harrison (harrison@cs.wustl.edu) -// and other members of the DOC group. -// More details can be found in: -// http://www.cs.wustl.edu/~schmidt/oopsla.ps.gz -// http://www.cs.wustl.edu/~schmidt/JSAC-98.ps.gz -// -// ============================================================================ - -#ifndef TAO_EC_PROXYPUSHSUPPLIER_SET_H -#define TAO_EC_PROXYPUSHSUPPLIER_SET_H - -#include "orbsvcs/orbsvcs_export.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Containers.h" -#include "tao/corba.h" -#include "EC_Busy_Lock.h" -#if defined(__GNUC__) && __GNUC__ == 2 && __GNUC_MINOR__ < 8 -// g++ 2.7.2 is broken and cannot handle forward declaration of -// templates in this case. -// I could just include this file for all compilers, but I want to -// minimize compile-time dependencies *and* document this problem so -// we can fix it as g++ 2.7.2 is phased out. -#include "EC_Command.h" -#endif /* __GNUC__ */ - -class TAO_EC_ProxyPushSupplier; -template<class Target,class Object> class TAO_EC_Connected_Command; -template<class Target,class Object> class TAO_EC_Disconnected_Command; -template<class Target> class TAO_EC_Shutdown_Command_T; - -class TAO_ORBSVCS_Export TAO_EC_ProxyPushSupplier_Set -{ - // = TITLE - // ProxyPushSupplier_Set - // - // = DESCRIPTION - // Many components in the Event Channel need to keep a collection - // of ProxyPushSuppliers; this collections must be able to cope - // with several concurrency issues: - // + Some threads may need to iterate over the collection and - // invoke a method on each element. Locking the collection - // while this is done is not feasible in all cases: under some - // configurations the same thread that is iterating over the - // collection may need to make changes. - // + A recursive lock does not solve the concurrency problems - // correctly because in the common case we don't want to stop - // other threads from doing the same iteration, and changes to - // the collection could be very uncommon wrt dispatching over - // the set of ProxyPushSuppliers. - // + Using a reader-write lock with upgrades does not solve the - // problem either: upgrading the lock can fail and still - // invalidates the iterators that the thread has. - // + Copying the collection to iterate over it is a good solution - // for non-real-time systems, but again the copying could be - // non-deterministic, and is expensive since most iterations - // will not result in changes. - // - // This class encapsulates a protocol to solve this concurrency - // issues (and other minor ones). The first solution is to delay - // changes by putting them on an "operation queue", the operations - // are stored as command objects in this queue and executed once - // the system is quiescent (i.e. no threads are iterating over the - // collection). - // This solves the major problems, but there are other issues to - // be addressed: - // + How do we ensure that the operations are eventually executed? - // + How do we simplify the execution of the locking protocol for - // clients of this class? - // + How do we minimize overhead for single threaded execution? - // + How do we minimize the overhead for the cases where the - // threads dispatching events don't post changes to the - // collection? - // - // = VARIANTS - // - // We identify several sources of variation: - // - // + Immediate changes without delay (only locking). This is only - // useful in configurations where a separate thread dispatches - // the events, and thus, can only be used with real locks. - // The busy()/idle() methods use a read acquire/release, the - // connected()/disconnected() methods use a write - // acquire/release. We can either use RW or regular mutexes. - // IMPLEMENTATION: a derived class with strategized locking - // (ACE_Lock? or templates?). - // - // + Copying data for iteration: - // Can use a regular mutex (as in the previous case), or even a - // null lock. - // @@ Must stablish if there is a simple way to encapsulate this - // in the Set class, as opposed to the clients of the class. - // @@ The implementation is essentially the same as above, but - // the clients must make the copy. - // IMPLEMENTATION: As above. - // - // + Delayed operations: - // Only makes sense if the thread dispatching is the same thread - // where the upcalls run. - // Can require regular locks or null locks (for ST - // implementations); notice that this will require templates - // to parametrize the mutexes and condition variables. - // There are two main variations: - // - // - An upcall can result in new dispatches: in this case we - // have to keep track of a the list of current threads using - // a Set, to avoid dead-locks. - // IMPLEMENTATION: the design is not complete, probably - // similar to the next one. - // - // - Otherwise we just need to control the concurrency using the - // algorithm described below. - // IMPLEMENTATION: a derived parametric class (the arguments - // are the types of locks). - // - // = DELAYED OPERATIONS AND CONCURRENCY - // - // The algorithm proposed so far is: - // - If a thread is using the set then it increases the busy - // count, this is done by calling the busy() method. Once the - // thread has stopped using the collection the idle() method is - // invoked and the busy count is decreased. - // A helper class (Busy_Lock) is used to hide this protocol - // behind the familiar GUARD idiom. - // - If the busy count reaches the busy_hwm then the thread must - // wait until the count reaches 0 again. - // This can be used to control the maximum concurrency in the - // EC, matching it (for example) with the number of - // processors. Setting the concurrency to a high value (say one - // million) allows for an arbitrary number of threads to execute - // concurrently. - // - If a modification is posted to the collection we need to - // execute it at some point. - // Just using the busy_hwm would not work, the HWM may not be - // reached ever, so another form of control is needed. - // Instead we use another counter, that keeps track of how many - // threads have used the set since the modification was - // posted. If this number of threads reaches max_write_delay then - // we don't allow any more threads to go in, eventually the - // thread count reaches 0 and we can proceed with the operations. - // - // - There is one aspect of concurrency that can be problematic: if - // thread pushes events as part of an upcall then the same thread - // could be counted twice, we need to keep track of the threads - // that are dispatching events and not increase (or decrease) the - // reference count when a thread iterates twice over the same - // set. - // - // = MEMORY MANAGMENT - // It assumes ownership of the ProxyPushSuppliers added to the - // collection: simply by increasing their reference count. - // - // = LOCKING - // Locking is provided by derived classes. - // - // = TODO - // -public: - TAO_EC_ProxyPushSupplier_Set (void); - // Constructor. - - virtual ~TAO_EC_ProxyPushSupplier_Set (void); - // Destructor. - - typedef ACE_Unbounded_Set<TAO_EC_ProxyPushSupplier*> SupplierSet; - typedef ACE_Unbounded_Set_Iterator<TAO_EC_ProxyPushSupplier*> SupplierSetIterator; - // The actual implementation of the collection, notice that only - // iteration is exposed, methods to insert and remove objects are - // hidden behind proper interfaces. - - SupplierSetIterator begin (void); - SupplierSetIterator end (void); - // Iterators over the set of ProxyPushSuppliers - // Remember that all clients of this class must call busy() before - // starting an iteration and call idle() once the iteration is - // finished. Otherwise the iterators may be invalidated by other - // threads. - // A helper object (the busy_lock) is provided to simplify this task - // and make it exception safe. - - typedef TAO_EC_Busy_Lock_Adapter<TAO_EC_ProxyPushSupplier_Set> Busy_Lock; - Busy_Lock& busy_lock (void); - // This object is an adapter to the busy/idle protocol. - - void busy_hwm (CORBA::ULong hwm); - CORBA::ULong busy_hwm (void) const; - void max_write_delay (CORBA::ULong hwm); - CORBA::ULong max_write_delay (void) const; - // This two attributes control the maximum number of concurrent - // readers allowed in the set (busy_hwm) and the maximum number of - // threads that can proceed after there is a modification posted. - - virtual int busy (void) = 0; - virtual int idle (void) = 0; - // The implementation of this methods is provided by derived - // classes, that provide appropiate locking. - - virtual void connected (TAO_EC_ProxyPushSupplier *, - CORBA::Environment & = TAO_default_environment ()) = 0; - virtual void disconnected (TAO_EC_ProxyPushSupplier *, - CORBA::Environment & = TAO_default_environment ()) = 0; - // Used to inform the EC that a Supplier has connected or - // disconnected from it. - - virtual void shutdown (CORBA::Environment & = TAO_default_environment ()) = 0; - // The EC is shutting down, release all our resources. - -protected: - virtual void connected_i (TAO_EC_ProxyPushSupplier* supplier, - CORBA::Environment &env = TAO_default_environment ()); - // The implementation of connected(), without locking. It does not - // increase the reference count on the supplier - - virtual void disconnected_i (TAO_EC_ProxyPushSupplier* supplier, - CORBA::Environment &env = TAO_default_environment ()); - // The implementation of disconnected(), without locking. It - // decreases the reference count on the supplier if the operation is - // successful. - - virtual void shutdown_i (CORBA::Environment &env = TAO_default_environment ()); - // Implement the shutdown method, assuming the right locks are - // acquired by the base class. - - typedef TAO_EC_Connected_Command<TAO_EC_ProxyPushSupplier_Set,TAO_EC_ProxyPushSupplier> Connected_Command; - typedef TAO_EC_Disconnected_Command<TAO_EC_ProxyPushSupplier_Set,TAO_EC_ProxyPushSupplier> Disconnected_Command; - typedef TAO_EC_Shutdown_Command_T<TAO_EC_ProxyPushSupplier_Set> Shutdown_Command; - - friend class TAO_EC_Connected_Command<TAO_EC_ProxyPushSupplier_Set,TAO_EC_ProxyPushSupplier>; - friend class TAO_EC_Disconnected_Command<TAO_EC_ProxyPushSupplier_Set,TAO_EC_ProxyPushSupplier>; - friend class TAO_EC_Shutdown_Command_T<TAO_EC_ProxyPushSupplier_Set>; - // This classes call the connected_i(), disconnected_i() and - // shutdown_i() methods, that's ok because they do while this class - // is holding its lock. - - virtual void execute_delayed_operations (void); - // Derived classes that implement delayed disconnects and connects - // must override this method. - -protected: - SupplierSet all_suppliers_; - // The collection of ProxyPushSupplier objects. - - TAO_EC_Busy_Lock_Adapter<TAO_EC_ProxyPushSupplier_Set> busy_lock_; - // The busy lock object - -private: - CORBA::ULong busy_hwm_; - CORBA::ULong max_write_delay_; - // Control variables for the concurrency policies. -}; - -#if defined (__ACE_INLINE__) -#include "EC_ProxyPushSupplier_Set.i" -#endif /* __ACE_INLINE__ */ - -#endif /* TAO_EC_PROXYPUSHSUPPLIER_SET_H */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.i b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.i deleted file mode 100644 index dda5992d8a4..00000000000 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set.i +++ /dev/null @@ -1,43 +0,0 @@ -// $Id$ - -ACE_INLINE TAO_EC_ProxyPushSupplier_Set::SupplierSetIterator -TAO_EC_ProxyPushSupplier_Set::begin (void) -{ - return this->all_suppliers_.begin (); -} - -ACE_INLINE TAO_EC_ProxyPushSupplier_Set::SupplierSetIterator -TAO_EC_ProxyPushSupplier_Set::end (void) -{ - return this->all_suppliers_.end (); -} - -ACE_INLINE void -TAO_EC_ProxyPushSupplier_Set::busy_hwm (CORBA::ULong hwm) -{ - this->busy_hwm_ = hwm; -} - -ACE_INLINE CORBA::ULong -TAO_EC_ProxyPushSupplier_Set::busy_hwm (void) const -{ - return this->busy_hwm_; -} - -ACE_INLINE void -TAO_EC_ProxyPushSupplier_Set::max_write_delay (CORBA::ULong mwd) -{ - this->max_write_delay_ = mwd; -} - -ACE_INLINE CORBA::ULong -TAO_EC_ProxyPushSupplier_Set::max_write_delay (void) const -{ - return this->max_write_delay_; -} - -ACE_INLINE TAO_EC_ProxyPushSupplier_Set::Busy_Lock& -TAO_EC_ProxyPushSupplier_Set::busy_lock (void) -{ - return this->busy_lock_; -} diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.cpp deleted file mode 100644 index b4b03f2b9d0..00000000000 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.cpp +++ /dev/null @@ -1,184 +0,0 @@ -// $Id$ - -#ifndef TAO_EC_PROXYPUSHSUPPLIER_SET_T_CPP -#define TAO_EC_PROXYPUSHSUPPLIER_SET_T_CPP - -#include "EC_ProxyPushSupplier_Set_T.h" -#include "EC_Command.h" - -#if ! defined (__ACE_INLINE__) -#include "EC_ProxyPushSupplier_Set_T.i" -#endif /* __ACE_INLINE__ */ - -ACE_RCSID(Event, EC_ProxyPushSupplier_Set_T, "$Id$") - -template<class ACE_LOCK>int -TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_LOCK>::busy (void) -{ - return this->lock_.acquire_read (); -} - -template<class ACE_LOCK> int -TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_LOCK>::idle (void) -{ - return this->lock_.release (); -} - -template<class ACE_LOCK> void -TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_LOCK>::connected ( - TAO_EC_ProxyPushSupplier* supplier, - CORBA::Environment& ACE_TRY_ENV) -{ - ACE_GUARD_THROW_EX (ACE_LOCK, ace_mon, this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - supplier->_incr_refcnt (); - this->connected_i (supplier, ACE_TRY_ENV); -} - -template<class ACE_LOCK> void -TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_LOCK>::disconnected ( - TAO_EC_ProxyPushSupplier* supplier, - CORBA::Environment& ACE_TRY_ENV) -{ - ACE_GUARD_THROW_EX (ACE_LOCK, ace_mon, this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - this->disconnected_i (supplier, ACE_TRY_ENV); -} - -template<class ACE_LOCK> void -TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_LOCK>::shutdown ( - CORBA::Environment& ACE_TRY_ENV) -{ - ACE_GUARD_THROW_EX (ACE_LOCK, ace_mon, this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - this->shutdown_i (ACE_TRY_ENV); -} - -// **************************************************************** - -template<ACE_SYNCH_DECL>int -TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH_USE>::busy (void) -{ - ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, -1); - - while (this->busy_count_ >= this->busy_hwm () - || this->write_delay_ >= this->max_write_delay ()) - this->busy_cond_.wait (); - this->busy_count_++; - - return 0; -} - -template<ACE_SYNCH_DECL> int -TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH_USE>::idle (void) -{ - ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, -1); - - this->busy_count_--; - if (this->busy_count_ == 0) - { - this->write_delay_ = 0; - this->execute_delayed_operations (); - this->busy_cond_.broadcast (); - } - return 0; -} - -template<ACE_SYNCH_DECL> void -TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH_USE>::connected ( - TAO_EC_ProxyPushSupplier* supplier, - CORBA::Environment& ACE_TRY_ENV) -{ - ACE_GUARD_THROW_EX (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->busy_count_ == 0) - { - // We can add the object immediately - supplier->_incr_refcnt (); - this->connected_i (supplier, ACE_TRY_ENV); - } - else - { - supplier->_incr_refcnt (); - ACE_Command_Base* command; - ACE_NEW (command, - TAO_EC_ProxyPushSupplier_Set::Connected_Command (this, - supplier)); - this->command_queue_.enqueue_tail (command); - this->write_delay_++; - } -} - -template<ACE_SYNCH_DECL> void -TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH_USE>::disconnected ( - TAO_EC_ProxyPushSupplier* supplier, - CORBA::Environment& ACE_TRY_ENV) -{ - ACE_GUARD_THROW_EX (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->busy_count_ == 0) - { - // We can remove the object immediately - this->disconnected_i (supplier, ACE_TRY_ENV); - } - else - { - ACE_Command_Base* command; - ACE_NEW (command, - TAO_EC_ProxyPushSupplier_Set::Disconnected_Command (this, - supplier)); - - this->command_queue_.enqueue_tail (command); - this->write_delay_++; - } -} - -template<ACE_SYNCH_DECL> void -TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH_USE>::shutdown ( - CORBA::Environment& ACE_TRY_ENV) -{ - ACE_GUARD_THROW_EX (ACE_SYNCH_MUTEX_T, ace_mon, this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->busy_count_ == 0) - { - // We can remove the object immediately - this->shutdown_i (ACE_TRY_ENV); - } - else - { - ACE_Command_Base* command; - ACE_NEW (command, - TAO_EC_ProxyPushSupplier_Set::Shutdown_Command (this)); - - this->command_queue_.enqueue_tail (command); - this->write_delay_++; - } -} - -template<ACE_SYNCH_DECL> void -TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH_USE>::execute_delayed_operations (void) -{ - // LOCKING: the lock is taken by the idle() function - while (!this->command_queue_.is_empty ()) - { - ACE_Command_Base* command; - this->command_queue_.dequeue_head (command); - - command->execute (); - - delete command; - } -} - -#endif /* TAO_EC_PROXYPUSHSUPPLIER_SET_T_CPP */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.h b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.h deleted file mode 100644 index 6da089b3396..00000000000 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.h +++ /dev/null @@ -1,130 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ -// -// ============================================================================ -// -// = LIBRARY -// ORBSVCS Real-time Event Channel -// -// = FILENAME -// EC_ProxyPushSupplier_Set_T -// -// = AUTHOR -// Carlos O'Ryan (coryan@cs.wustl.edu) -// -// = CREDITS -// Based on previous work by Tim Harrison (harrison@cs.wustl.edu) -// and other members of the DOC group. -// More details can be found in: -// http://www.cs.wustl.edu/~schmidt/oopsla.ps.gz -// http://www.cs.wustl.edu/~schmidt/JSAC-98.ps.gz -// -// ============================================================================ - -#ifndef TAO_EC_PROXYPUSHSUPPLIER_SET_T_H -#define TAO_EC_PROXYPUSHSUPPLIER_SET_T_H - -#include "EC_ProxyPushSupplier_Set.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -template<class ACE_LOCK> -class TAO_EC_ProxyPushSupplier_Set_Immediate : public TAO_EC_ProxyPushSupplier_Set -{ - // = TITLE - // ProxyPushSupplier_Set_Immediate - // - // = DESCRIPTION - // A concrete implementation of EC_ProxyPushSupplier_Set that - // propagate changes to the set immediately. - // - // = LOCKING - // Uses parametric types to provide locking. - // - // = TODO - // -public: - TAO_EC_ProxyPushSupplier_Set_Immediate (void); - // Constructor. - - // = Read the descriptions in EC_ProxyPushSupplier_Set - virtual int busy (void); - virtual int idle (void); - virtual void connected (TAO_EC_ProxyPushSupplier*, - CORBA::Environment&); - virtual void disconnected (TAO_EC_ProxyPushSupplier*, - CORBA::Environment&); - virtual void shutdown (CORBA::Environment&); - -private: - ACE_LOCK lock_; - // The lock. -}; - -// **************************************************************** - -template<ACE_SYNCH_DECL> -class TAO_EC_ProxyPushSupplier_Set_Delayed : public TAO_EC_ProxyPushSupplier_Set -{ - // = TITLE - // ProxyPushSupplier_Set_Delayed - // - // = DESCRIPTION - // A concrete implementation of EC_ProxyPushSupplier_Set that - // delays changes to the set until no threads are using the set. - // - // = LOCKING - // Uses parametric types to provide locking. - // - // = TODO - // -public: - TAO_EC_ProxyPushSupplier_Set_Delayed (void); - // Constructor. - - // = Read the descriptions in EC_ProxyPushSupplier_Set - virtual int busy (void); - virtual int idle (void); - virtual void connected (TAO_EC_ProxyPushSupplier*, - CORBA::Environment&); - virtual void disconnected (TAO_EC_ProxyPushSupplier*, - CORBA::Environment&); - virtual void shutdown (CORBA::Environment&); - -protected: - virtual void execute_delayed_operations (void); - -private: - ACE_SYNCH_MUTEX_T lock_; - // The lock. - - ACE_SYNCH_CONDITION_T busy_cond_; - // A condition variable to wait while the object is too busy. - - CORBA::ULong busy_count_; - // Keep track of the number of threads using the set - - CORBA::ULong write_delay_; - // Keep track of the number of threads that have used the set since - // the last change was posted. - - ACE_Unbounded_Queue<ACE_Command_Base*> command_queue_; - // The commands that carry the delayed operations are enqueued - // here. -}; - -#if defined (__ACE_INLINE__) -#include "EC_ProxyPushSupplier_Set_T.i" -#endif /* __ACE_INLINE__ */ - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "EC_ProxyPushSupplier_Set_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("EC_ProxyPushSupplier_Set_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#endif /* TAO_EC_PROXYPUSHSUPPLIER_SET_H */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.i b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.i deleted file mode 100644 index f65b57d2cc7..00000000000 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyPushSupplier_Set_T.i +++ /dev/null @@ -1,19 +0,0 @@ -// $Id$ - -template<class ACE_LOCK> ACE_INLINE -TAO_EC_ProxyPushSupplier_Set_Immediate<ACE_LOCK>:: - TAO_EC_ProxyPushSupplier_Set_Immediate (void) -{ -} - -// **************************************************************** - -template<ACE_SYNCH_DECL> ACE_INLINE -TAO_EC_ProxyPushSupplier_Set_Delayed<ACE_SYNCH_USE>:: - TAO_EC_ProxyPushSupplier_Set_Delayed (void) - : busy_cond_ (lock_), - busy_count_ (0), - write_delay_ (0) -{ -} - diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.cpp new file mode 100644 index 00000000000..791f55c8fe6 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.cpp @@ -0,0 +1,312 @@ +// $Id$ + +#ifndef TAO_EC_PROXY_COLLECTION_CPP +#define TAO_EC_PROXY_COLLECTION_CPP + +#include "EC_Proxy_Collection.h" +#include "EC_Command.h" +#include "EC_Worker.h" +#include "EC_Defaults.h" +#include "orbsvcs/RtecEventChannelAdminC.h" + +#if ! defined (__ACE_INLINE__) +#include "EC_Proxy_Collection.i" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(Event, EC_Proxy_Collection, "$Id$") + +// **************************************************************** + +template<class PROXY> +TAO_EC_Proxy_Collection<PROXY>::~TAO_EC_Proxy_Collection (void) +{ +} + +// **************************************************************** + +template<class PROXY, class COLLECTION, class ITERATOR, class ACE_LOCK> +TAO_EC_Immediate_Changes<PROXY,COLLECTION,ITERATOR,ACE_LOCK>:: + TAO_EC_Immediate_Changes (void) +{ +} + +template<class PROXY, class COLLECTION, class ITERATOR, class ACE_LOCK> +TAO_EC_Immediate_Changes<PROXY,COLLECTION,ITERATOR,ACE_LOCK>:: + TAO_EC_Immediate_Changes (const COLLECTION &collection) + : collection_ (collection) +{ +} + +template<class PROXY, class COLLECTION, class ITERATOR, class ACE_LOCK> void +TAO_EC_Immediate_Changes<PROXY,COLLECTION,ITERATOR,ACE_LOCK>:: + for_each (TAO_EC_Worker<PROXY> *worker, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (ACE_LOCK, ace_mon, this->lock_); + + ITERATOR end = this->collection_.end (); + for (ITERATOR i = this->collection_.begin (); i != end; ++i) + { + worker->work ((*i), ACE_TRY_ENV); + ACE_CHECK; + } +} + +// **************************************************************** + +template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> +TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>:: + TAO_EC_Delayed_Changes (void) + : lock_ (this), + busy_cond_ (busy_lock_), + busy_count_ (0), + write_delay_count_ (0), + busy_hwm_ (TAO_EC_DEFAULT_BUSY_HWM), + max_write_delay_ (TAO_EC_DEFAULT_MAX_WRITE_DELAY) +{ +} + +template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> +TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>:: + TAO_EC_Delayed_Changes (const COLLECTION &collection) + : collection_ (collection), + lock_ (this), + busy_cond_ (busy_lock_), + busy_count_ (0), + write_delay_count_ (0), + busy_hwm_ (TAO_EC_DEFAULT_BUSY_HWM), + max_write_delay_ (TAO_EC_DEFAULT_MAX_WRITE_DELAY) +{ +} + +template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>:: + for_each (TAO_EC_Worker<PROXY> *worker, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (Busy_Lock, ace_mon, this->lock_); + + ITERATOR end = this->collection_.end (); + for (ITERATOR i = this->collection_.begin (); i != end; ++i) + { + worker->work (*i, ACE_TRY_ENV); + ACE_CHECK; + } +} + +template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> int +TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>:: + busy (void) +{ + ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, this->busy_lock_, -1); + + while (this->busy_count_ >= this->busy_hwm_ + || this->write_delay_count_ >= this->max_write_delay_) + this->busy_cond_.wait (); + this->busy_count_++; + + return 0; +} + +template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> int +TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>:: + idle (void) +{ + ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, this->busy_lock_, -1); + + this->busy_count_--; + if (this->busy_count_ == 0) + { + this->write_delay_count_ = 0; + this->execute_delayed_operations (); + this->busy_cond_.broadcast (); + } + return 0; +} + +template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> int +TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>:: + execute_delayed_operations (void) +{ + while (!this->command_queue_.is_empty ()) + { + ACE_Command_Base* command; + this->command_queue_.dequeue_head (command); + + command->execute (); + + delete command; + } + return 0; +} + +template<class PROXY, class C, class I,ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,C,I,ACE_SYNCH_USE>:: + connected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD_THROW_EX (ACE_SYNCH_MUTEX_T, ace_mon, this->busy_lock_, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); + ACE_CHECK; + + proxy->_incr_refcnt (); + if (this->busy_count_ == 0) + { + // We can add the object immediately + this->connected_i (proxy, ACE_TRY_ENV); + } + else + { + ACE_Command_Base* command; + ACE_NEW (command, + Connected_Command (this, + proxy)); + this->command_queue_.enqueue_tail (command); + this->write_delay_count_++; + } +} + +template<class PROXY, class C, class I,ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,C,I,ACE_SYNCH_USE>:: + reconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD_THROW_EX (ACE_SYNCH_MUTEX_T, ace_mon, this->busy_lock_, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); + ACE_CHECK; + + proxy->_incr_refcnt (); + if (this->busy_count_ == 0) + { + // We can reconnect the object immediately + this->reconnected_i (proxy, ACE_TRY_ENV); + } + else + { + ACE_Command_Base* command; + ACE_NEW (command, + Reconnected_Command (this, + proxy)); + this->command_queue_.enqueue_tail (command); + this->write_delay_count_++; + } +} + +template<class PROXY, class C, class I,ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,C,I,ACE_SYNCH_USE>:: + disconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD_THROW_EX (ACE_SYNCH_MUTEX_T, ace_mon, this->busy_lock_, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); + ACE_CHECK; + + if (this->busy_count_ == 0) + { + // We can remove the object immediately + this->disconnected_i (proxy, ACE_TRY_ENV); + } + else + { + ACE_Command_Base* command; + ACE_NEW (command, + Disconnected_Command (this, + proxy)); + this->command_queue_.enqueue_tail (command); + this->write_delay_count_++; + } +} + +template<class PROXY, class C, class I,ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,C,I,ACE_SYNCH_USE>:: + shutdown (CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD_THROW_EX (ACE_SYNCH_MUTEX_T, ace_mon, this->busy_lock_, + RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); + ACE_CHECK; + + if (this->busy_count_ == 0) + { + // We can shutdown the object immediately + this->shutdown_i (ACE_TRY_ENV); + } + else + { + ACE_Command_Base* command; + ACE_NEW (command, + Shutdown_Command (this)); + this->command_queue_.enqueue_tail (command); + this->write_delay_count_++; + } +} + +// **************************************************************** + +template<class PROXY, class COLLECTION, class ITERATOR, class ACE_LOCK> +TAO_EC_Copy_On_Read<PROXY,COLLECTION,ITERATOR,ACE_LOCK>:: + TAO_EC_Copy_On_Read (void) +{ +} + +template<class PROXY, class COLLECTION, class ITERATOR, class ACE_LOCK> +TAO_EC_Copy_On_Read<PROXY,COLLECTION,ITERATOR,ACE_LOCK>:: + TAO_EC_Copy_On_Read (const COLLECTION &collection) + : collection_ (collection) +{ +} + +template<class PROXY, class COLLECTION, class ITERATOR, class ACE_LOCK> void +TAO_EC_Copy_On_Read<PROXY,COLLECTION,ITERATOR,ACE_LOCK>:: + for_each (TAO_EC_Worker<PROXY> *worker, + CORBA::Environment &ACE_TRY_ENV) +{ + // @@ Use an allocator for this memory... + PROXY **proxies = 0; + size_t size = 0; + ACE_TRY + { + { + ACE_GUARD (ACE_LOCK, ace_mon, this->lock_); + + size = this->collection_.size (); + ACE_NEW (proxies, PROXY*[size]); + PROXY **j = proxies; + + for (; j != proxies + size; ++j) + *j = 0; + + j = proxies; + ITERATOR end = this->collection_.end (); + for (ITERATOR i = this->collection_.begin (); i != end; ++i) + { + *j = *i; + (*j)->_incr_refcnt (); + ++j; + } + } + + for (PROXY **j = proxies; j != proxies + size; ++j) + { + worker->work (*j, ACE_TRY_ENV); + ACE_TRY_CHECK; + (*j)->_decr_refcnt (); + } + delete[] proxies; + } + ACE_CATCHANY + { + for (PROXY **j = proxies; j != proxies + size; ++j) + { + if (*j != 0) + (*j)->_decr_refcnt (); + } + delete[] proxies; + + ACE_RETHROW; + } + ACE_ENDTRY; +} + +// **************************************************************** + +#endif /* TAO_EC_PROXY_COLLECTION_CPP */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.h b/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.h new file mode 100644 index 00000000000..2aaa4496426 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.h @@ -0,0 +1,363 @@ +/* -*- C++ -*- */ +// $Id$ +// +// ============================================================================ +// +// = LIBRARY +// ORBSVCS Real-time Event Channel +// +// = FILENAME +// EC_Proxy_Collection +// +// = AUTHOR +// Carlos O'Ryan (coryan@cs.wustl.edu) +// +// = CREDITS +// http://www.cs.wustl.edu/~coryan/EC/index.html +// +// ============================================================================ + +#ifndef TAO_EC_PROXY_COLLECTION_H +#define TAO_EC_PROXY_COLLECTION_H + +#include "EC_Busy_Lock.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "tao/corba.h" +#include "ace/Containers.h" + +template<class Target> class TAO_EC_Worker; + +template<class PROXY> +class TAO_EC_Proxy_Collection +{ + // = TITLE + // EC_Proxy_Collection + // + // = DESCRIPTION + // Many components in the Event Channel need to keep a collection + // of proxies; these collections must be able to cope with several + // concurrency issues: + // + Some threads may need to iterate over the collection and + // invoke a method on each element. Locking the collection + // while this is done is not feasible in all cases: under some + // configurations the same thread that is iterating over the + // collection may need to make changes to the set. + // + A recursive lock does not solve the concurrency problems + // because recursive changes to the collection still invalidate + // the iterators. + // + // There are several solutions to this problem (see the VARIANTS) + // section, and there is no single one that works bests in all + // cases. As usual, we wish the strategize the protocol used to + // serialize iterations and changes to the collection. This class + // encapsulates that protocol. + // + // The reasons are too long to enumerate here, but the Iterator + // pattern is not appropriate in this case. We use Function + // Objects (aka Worker) to perform a client-defined task on each + // member. + // + // Regular member functions are used to insert, remove and update + // members of the collection and to shutdown (i.e. perform final + // cleanup operations). + // + // The class must also collaborate with other components of the + // EC to efficiently and safely perform memory managment of the + // members in the collection. + // + // = VARIANTS + // + // We identify several sources of variation: + // + // + Immediate_Changes: in this variant the iteration in performed + // while holding some kind of synchronization primitive, such as a + // thread mutex, a recursive mutex, a RW lock, etc. + // This is only useful in configurations where a separate thread + // dispatches the events, and thus, can only be used with real + // locks. + // + // + Copy_On_Read: before performing the iteration the collection + // is duplicated into a temporary array. Thus no locks are held + // during the iteration. This is a very expensive approach, but + // useful in many cases. + // The kind of lock is also strategized in this case. + // + // + Copy_On_Write: this is very similar to the previous approach, + // but the collection is only duplicated when a change is required + // while some thread is performing an iteration. The iteration + // continues over the original copy, while the changes are + // performed in the duplicate. The new copy of the collection is + // used for any suibsequent operations, the original is discarded + // when the last thread using it completes its work. + // This approach optimizes for the case where no changes are + // is duplicated into a temporary array. Thus no locks are held + // during the iteration. This is a very expensive approach, but + // useful in many cases. + // The kind of lock is also strategized in this case. + // + // + Delayed_Changes: before starting the iteration a counter is + // incremented, this counter is used to keep track of the number + // of threads concurrently using the collection. + // If a thread wants to perform a change to the collection it must + // first verify that there are no threads iterating over it. If + // there are any threads then the thread queues the modification + // for later execution, using the Command pattern. + // The kind of lock is strategized, as this approach is used in + // single threaded configurations. + // There are two main variations: + // - An upcall can result in new dispatches: in this case we + // have to keep track of a the list of current threads using + // a Set, to avoid dead-locks. + // IMPLEMENTATION: the design is not complete, probably + // similar to the next one. + // - Otherwise we just need to control the concurrency using the + // algorithm described below. + // + // + // = MEMORY MANAGMENT + // It assumes ownership of the proxies added to the collection, + // it increases the reference count. + // + // = LOCKING + // Locking is provided by derived classes. + // + // = TODO + // +public: + virtual ~TAO_EC_Proxy_Collection (void); + // destructor + + virtual void for_each (TAO_EC_Worker<PROXY> *worker, + CORBA::Environment &ACE_TRY_ENV) = 0; + // Iterate over the collection and invoke worker->work() for each + // member of the collection. + // This encapsulates + + virtual void connected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) = 0; + // Insert a new element into the collection. The collection assumes + // ownership of the element. + + virtual void reconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) = 0; + // Insert an element into the collection. No errors can be raised + // if the element is already present. + // The collection assumes ownership, i.e. must invoke + // <proxy->_decr_refcnt()> if the element is already present in the + // collection. + + virtual void disconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) = 0; + // Remove an element from the collection. + + virtual void shutdown (CORBA::Environment &ACE_TRY_ENV) = 0; + // The EC is shutting down, must release all the elements. +}; + +// **************************************************************** + +template<class PROXY, class COLLECTION, class ITERATOR, class ACE_LOCK> +class TAO_EC_Immediate_Changes : public TAO_EC_Proxy_Collection<PROXY> +{ + // = TITLE + // TAO_EC_Immediate_Changes + // + // = DESCRIPTION + // Implement the Immediate_ +public: + TAO_EC_Immediate_Changes (void); + TAO_EC_Immediate_Changes (const COLLECTION &collection); + + // = The TAO_EC_Proxy methods + virtual void for_each (TAO_EC_Worker<PROXY> *worker, + CORBA::Environment &ACE_TRY_ENV); + virtual void connected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void reconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void disconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void shutdown (CORBA::Environment &ACE_TRY_ENV); + +private: + COLLECTION collection_; + + ACE_LOCK lock_; +}; + +// **************************************************************** + +template<class PROXY, class COLLECTION, class ITERATOR, class ACE_LOCK> +class TAO_EC_Copy_On_Read : public TAO_EC_Proxy_Collection<PROXY> +{ + // = TITLE + // TAO_EC_Copy_On_Read + // + // = DESCRIPTION + // Implement the Copy_On_Read protocol + // The class is parametric on the kind of collection and locking + // mechanism used. + // + // = TODO + // Ensure that the collection and lock types can be + // ACE_Lock_Adapter and ACE_Proxy_Set so they can be dynamically + // modified. + // +public: + TAO_EC_Copy_On_Read (void); + TAO_EC_Copy_On_Read (const COLLECTION &collection); + // Constructors + + // = The TAO_EC_Proxy methods + virtual void for_each (TAO_EC_Worker<PROXY> *worker, + CORBA::Environment &ACE_TRY_ENV); + virtual void connected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void reconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void disconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void shutdown (CORBA::Environment &ACE_TRY_ENV); + +private: + COLLECTION collection_; + + ACE_LOCK lock_; +}; + +// **************************************************************** + +template<class Target,class Object> class TAO_EC_Connected_Command; +template<class Target,class Object> class TAO_EC_Disconnected_Command; +template<class Target,class Object> class TAO_EC_Reconnected_Command; +template<class Target> class TAO_EC_Shutdown_Command; + +template<class PROXY, class COLLECTION, class ITERATOR, ACE_SYNCH_DECL> +class TAO_EC_Delayed_Changes : public TAO_EC_Proxy_Collection<PROXY> +{ + // = TITLE + // TAO_EC_Delayed_Operations + // + // = DESCRIPTION + // This class implements the Delayed Operations protocol to solve + // the concurrency challenges outlined in the documentation of + // TAO_EC_Proxy_Collection. + // In short the class delays changes by putting them on an + // "operation queue", the operations are stored as command objects + // in this queue and executed once the system is quiescent + // (i.e. no threads are iterating over the collection). + // + // The algorithm implemented so far is: + // - If a thread is using the set then it increases the busy + // count, this is done by calling the busy() method. Once the + // thread has stopped using the collection the idle() method is + // invoked and the busy count is decreased. + // A helper class (Busy_Lock) is used to hide this protocol + // behind the familiar GUARD idiom. + // - If the busy count reaches the busy_hwm then the thread must + // wait until the count reaches 0 again. + // This can be used to control the maximum concurrency in the + // EC, matching it (for example) with the number of + // processors. Setting the concurrency to a high value (say one + // million) allows for an arbitrary number of threads to execute + // concurrently. + // - If a modification is posted to the collection we need to + // execute it at some point. + // Just using the busy_hwm would not work, the HWM may not be + // reached ever, so another form of control is needed. + // Instead we use another counter, that keeps track of how many + // threads have used the set since the modification was + // posted. If this number of threads reaches max_write_delay then + // we don't allow any more threads to go in, eventually the + // thread count reaches 0 and we can proceed with the operations. + // + // - There is one aspect of concurrency that can be problematic: if + // thread pushes events as part of an upcall then the same thread + // could be counted twice, we need to keep track of the threads + // that are dispatching events and not increase (or decrease) the + // reference count when a thread iterates twice over the same + // set. + // + // This solves the major problems, but there are other issues to + // be addressed: + // + How do we ensure that the operations are eventually executed? + // + How do we simplify the execution of the locking protocol for + // clients of this class? + // + How do we minimize overhead for single threaded execution? + // + How do we minimize the overhead for the cases where the + // threads dispatching events don't post changes to the + // collection? + // +public: + TAO_EC_Delayed_Changes (void); + TAO_EC_Delayed_Changes (const COLLECTION &collection); + + int busy (void); + int idle (void); + int execute_delayed_operations (void); + + void connected_i (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + void reconnected_i (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + void disconnected_i (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + void shutdown_i (CORBA::Environment &ACE_TRY_ENV); + + typedef TAO_EC_Connected_Command<TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>,PROXY> Connected_Command; + typedef TAO_EC_Reconnected_Command<TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>,PROXY> Reconnected_Command; + typedef TAO_EC_Disconnected_Command<TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE>,PROXY> Disconnected_Command; + typedef TAO_EC_Shutdown_Command<TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE> > Shutdown_Command; + + // = The TAO_EC_Proxy methods + virtual void for_each (TAO_EC_Worker<PROXY> *worker, + CORBA::Environment &ACE_TRY_ENV); + virtual void connected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void reconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void disconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV); + virtual void shutdown (CORBA::Environment &ACE_TRY_ENV); + +private: + COLLECTION collection_; + + typedef TAO_EC_Busy_Lock_Adapter<TAO_EC_Delayed_Changes<PROXY,COLLECTION,ITERATOR,ACE_SYNCH_USE> > Busy_Lock; + + Busy_Lock lock_; + + ACE_SYNCH_MUTEX_T busy_lock_; + + ACE_SYNCH_CONDITION_T busy_cond_; + + CORBA::ULong busy_count_; + + CORBA::ULong write_delay_count_; + + CORBA::ULong busy_hwm_; + CORBA::ULong max_write_delay_; + // Control variables for the concurrency policies. + + ACE_Unbounded_Queue<ACE_Command_Base*> command_queue_; +}; + +// **************************************************************** + +#if defined (__ACE_INLINE__) +#include "EC_Proxy_Collection.i" +#endif /* __ACE_INLINE__ */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "EC_Proxy_Collection.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("EC_Proxy_Collection.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#endif /* TAO_EC_PROXY_COLLECTION_H */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.i b/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.i new file mode 100644 index 00000000000..0ba01af2bd3 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Proxy_Collection.i @@ -0,0 +1,118 @@ +// $Id$ + +template<class PROXY, class C, class I, class L> void +TAO_EC_Immediate_Changes<PROXY,C,I,L>:: + connected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (L, ace_mon, this->lock_); + + proxy->_incr_refcnt (); + this->collection_.connected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I, class L> void +TAO_EC_Immediate_Changes<PROXY,C,I,L>:: + reconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (L, ace_mon, this->lock_); + + proxy->_incr_refcnt (); + this->collection_.reconnected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I, class L> void +TAO_EC_Immediate_Changes<PROXY,C,I,L>:: + disconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (L, ace_mon, this->lock_); + + this->collection_.disconnected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I, class L> void +TAO_EC_Immediate_Changes<PROXY,C,I,L>:: + shutdown (CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (L, ace_mon, this->lock_); + + this->collection_.shutdown (ACE_TRY_ENV); +} + +// **************************************************************** + +template<class PROXY, class C, class I,ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,C,I,ACE_SYNCH_USE>:: + connected_i (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + this->collection_.connected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I,ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,C,I,ACE_SYNCH_USE>:: + reconnected_i (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + this->collection_.reconnected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I,ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,C,I,ACE_SYNCH_USE>:: + disconnected_i (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + this->collection_.disconnected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I,ACE_SYNCH_DECL> void +TAO_EC_Delayed_Changes<PROXY,C,I,ACE_SYNCH_USE>:: + shutdown_i (CORBA::Environment &ACE_TRY_ENV) +{ + this->collection_.shutdown (ACE_TRY_ENV); +} + +// **************************************************************** + +template<class PROXY, class C, class I, class L> void +TAO_EC_Copy_On_Read<PROXY,C,I,L>:: + connected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (L, ace_mon, this->lock_); + + proxy->_incr_refcnt (); + this->collection_.connected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I, class L> void +TAO_EC_Copy_On_Read<PROXY,C,I,L>:: + reconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (L, ace_mon, this->lock_); + + proxy->_incr_refcnt (); + this->collection_.reconnected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I, class L> void +TAO_EC_Copy_On_Read<PROXY,C,I,L>:: + disconnected (PROXY *proxy, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (L, ace_mon, this->lock_); + + this->collection_.disconnected (proxy, ACE_TRY_ENV); +} + +template<class PROXY, class C, class I, class L> void +TAO_EC_Copy_On_Read<PROXY,C,I,L>:: + shutdown (CORBA::Environment &ACE_TRY_ENV) +{ + ACE_GUARD (L, ace_mon, this->lock_); + + this->collection_.shutdown (ACE_TRY_ENV); +} diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.cpp index cf08b13cfba..1952164eb4c 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.cpp @@ -5,7 +5,7 @@ #include "EC_ConsumerAdmin.h" #include "EC_ProxySupplier.h" -#if ! defined (__ACE_INdLINE__) +#if ! defined (__ACE_INLINE__) #include "EC_Reactive_ConsumerControl.i" #endif /* __ACE_INLINE__ */ @@ -32,54 +32,10 @@ void TAO_EC_Reactive_ConsumerControl::query_consumers ( CORBA::Environment &ACE_TRY_ENV) { - TAO_EC_ConsumerAdmin *consumer_admin = - this->event_channel_->consumer_admin (); - - TAO_EC_ConsumerAdmin::Busy_Lock &lock = - consumer_admin->busy_lock (); - - ACE_GUARD (TAO_EC_ConsumerAdmin::Busy_Lock, ace_mon, lock); - - TAO_EC_ConsumerAdmin::SupplierSetIterator end = - consumer_admin->end (); - for (TAO_EC_ConsumerAdmin::SupplierSetIterator i = - consumer_admin->begin (); - i != end; - ++i) - { - TAO_EC_ProxyPushSupplier *proxy = *i; - ACE_TRY - { - CORBA::Boolean disconnected; - CORBA::Boolean non_existent = - proxy->consumer_non_existent (disconnected, - ACE_TRY_ENV); - ACE_TRY_CHECK; - if (non_existent && !disconnected) - { - this->consumer_not_exist (proxy, ACE_TRY_ENV); - ACE_TRY_CHECK; - } - } - ACE_CATCH (CORBA::OBJECT_NOT_EXIST, ex) - { - this->consumer_not_exist (proxy, ACE_TRY_ENV); - ACE_TRY_CHECK; - } - ACE_CATCH (CORBA::TRANSIENT, transient) - { - // This is TAO's minor code for a failed connection, we may - // want to be more lenient in the future.. - // if (transient.minor () == 0x54410085) - this->consumer_not_exist (proxy, ACE_TRY_ENV); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - // Ignore all exceptions - } - ACE_ENDTRY; - } + TAO_EC_Ping_Consumer worker (this); + this->event_channel_->consumer_admin ()->for_each (&worker, + ACE_TRY_ENV); + ACE_CHECK; } void @@ -241,6 +197,45 @@ TAO_EC_ConsumerControl_Adapter::handle_timeout ( return 0; } +// **************************************************************** + +void +TAO_EC_Ping_Consumer::work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_TRY + { + CORBA::Boolean disconnected; + CORBA::Boolean non_existent = + supplier->consumer_non_existent (disconnected, + ACE_TRY_ENV); + ACE_TRY_CHECK; + if (non_existent && !disconnected) + { + this->control_->consumer_not_exist (supplier, ACE_TRY_ENV); + ACE_TRY_CHECK; + } + } + ACE_CATCH (CORBA::OBJECT_NOT_EXIST, ex) + { + this->control_->consumer_not_exist (supplier, ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCH (CORBA::TRANSIENT, transient) + { + // This is TAO's minor code for a failed connection, we may + // want to be more lenient in the future.. + // if (transient.minor () == 0x54410085) + this->control_->consumer_not_exist (supplier, ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + // Ignore all exceptions + } + ACE_ENDTRY; +} + #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.h b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.h index 8345c9a947b..2f84c8e7945 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.h @@ -21,6 +21,7 @@ #define TAO_EC_REACTIVE_CONSUMERCONTROL_H #include "EC_ConsumerControl.h" +#include "EC_Worker.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -121,6 +122,20 @@ private: // The ORB reactor }; +// **************************************************************** + +class TAO_EC_Ping_Consumer : public TAO_EC_Worker<TAO_EC_ProxyPushSupplier> +{ +public: + TAO_EC_Ping_Consumer (TAO_EC_ConsumerControl *control); + + virtual void work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_ConsumerControl *control_; +}; + #if defined (__ACE_INLINE__) #include "EC_Reactive_ConsumerControl.i" #endif /* __ACE_INLINE__ */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.i b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.i index cfa1da318d3..08e2174e57d 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.i @@ -1 +1,7 @@ // $Id$ + +ACE_INLINE +TAO_EC_Ping_Consumer::TAO_EC_Ping_Consumer (TAO_EC_ConsumerControl *control) + : control_ (control) +{ +} diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.cpp index 330586aad7e..8e6f94564df 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.cpp @@ -5,7 +5,7 @@ #include "EC_SupplierAdmin.h" #include "EC_ProxyConsumer.h" -#if ! defined (__ACE_INdLINE__) +#if ! defined (__ACE_INLINE__) #include "EC_Reactive_SupplierControl.i" #endif /* __ACE_INLINE__ */ @@ -32,54 +32,10 @@ void TAO_EC_Reactive_SupplierControl::query_suppliers ( CORBA::Environment &ACE_TRY_ENV) { - TAO_EC_SupplierAdmin *supplier_admin = - this->event_channel_->supplier_admin (); - - TAO_EC_SupplierAdmin::Busy_Lock &lock = - supplier_admin->busy_lock (); - - ACE_GUARD (TAO_EC_SupplierAdmin::Busy_Lock, ace_mon, lock); - - TAO_EC_SupplierAdmin::ConsumerSetIterator end = - supplier_admin->end (); - for (TAO_EC_SupplierAdmin::ConsumerSetIterator i = - supplier_admin->begin (); - i != end; - ++i) - { - TAO_EC_ProxyPushConsumer *proxy = *i; - ACE_TRY - { - CORBA::Boolean disconnected; - CORBA::Boolean non_existent = - proxy->supplier_non_existent (disconnected, - ACE_TRY_ENV); - ACE_TRY_CHECK; - if (non_existent && !disconnected) - { - this->supplier_not_exist (proxy, ACE_TRY_ENV); - ACE_TRY_CHECK; - } - } - ACE_CATCH (CORBA::OBJECT_NOT_EXIST, ex) - { - this->supplier_not_exist (proxy, ACE_TRY_ENV); - ACE_TRY_CHECK; - } - ACE_CATCH (CORBA::TRANSIENT, transient) - { - // This is TAO's minor code for a failed connection, we may - // want to be more lenient in the future.. - // if (transient.minor () == 0x54410085) - this->supplier_not_exist (proxy, ACE_TRY_ENV); - ACE_TRY_CHECK; - } - ACE_CATCHANY - { - // Ignore all exceptions - } - ACE_ENDTRY; - } + TAO_EC_Ping_Supplier worker (this); + this->event_channel_->supplier_admin ()->for_each (&worker, + ACE_TRY_ENV); + ACE_CHECK; } void @@ -239,6 +195,45 @@ TAO_EC_SupplierControl_Adapter::handle_timeout ( return 0; } +// **************************************************************** + +void +TAO_EC_Ping_Supplier::work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_TRY + { + CORBA::Boolean disconnected; + CORBA::Boolean non_existent = + consumer->supplier_non_existent (disconnected, + ACE_TRY_ENV); + ACE_TRY_CHECK; + if (non_existent && !disconnected) + { + this->control_->supplier_not_exist (consumer, ACE_TRY_ENV); + ACE_TRY_CHECK; + } + } + ACE_CATCH (CORBA::OBJECT_NOT_EXIST, ex) + { + this->control_->supplier_not_exist (consumer, ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCH (CORBA::TRANSIENT, transient) + { + // This is TAO's minor code for a failed connection, we may + // want to be more lenient in the future.. + // if (transient.minor () == 0x54410085) + this->control_->supplier_not_exist (consumer, ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + // Ignore all exceptions + } + ACE_ENDTRY; +} + #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h index 2015211af4e..9c8c82851c8 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.h @@ -21,6 +21,7 @@ #define TAO_EC_REACTIVE_SUPPLIERCONTROL_H #include "EC_SupplierControl.h" +#include "EC_Worker.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -121,6 +122,20 @@ private: // The ORB reactor }; +// **************************************************************** + +class TAO_EC_Ping_Supplier : public TAO_EC_Worker<TAO_EC_ProxyPushConsumer> +{ +public: + TAO_EC_Ping_Supplier (TAO_EC_SupplierControl *control); + + virtual void work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_SupplierControl *control_; +}; + #if defined (__ACE_INLINE__) #include "EC_Reactive_SupplierControl.i" #endif /* __ACE_INLINE__ */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.i b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.i index cfa1da318d3..0bd62d884aa 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.i @@ -1 +1,8 @@ // $Id$ + +ACE_INLINE +TAO_EC_Ping_Supplier::TAO_EC_Ping_Supplier (TAO_EC_SupplierControl *control) + : control_ (control) +{ +} + diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.cpp index 54cd37539ca..f69f6e8cbc5 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.cpp @@ -14,22 +14,23 @@ ACE_RCSID(Event, EC_SupplierAdmin, "$Id$") TAO_EC_SupplierAdmin::TAO_EC_SupplierAdmin (TAO_EC_Event_Channel *ec) : event_channel_ (ec) { + this->collection_ = + this->event_channel_->create_proxy_push_consumer_collection (); + + // @@ + // @@ this->collection_->busy_hwm (this->event_channel_->busy_hwm ()); + // @@ this->collection_->max_write_delay ( + // @@ this->event_channel_->max_write_delay () + // @@ ); + this->default_POA_ = this->event_channel_->supplier_poa (); - - // @@ We must consider using the techniques in the ConsumerAdmin - // also, i.e. not using locks but delaying operations that modify - // the set. I don't see much use for them right now, since there - // is no potential for dead-lock when dispatching events and/or - // adding multiple suppliers and consumers, but we could avoid - // some priority inversions. - this->lock_ = - this->event_channel_->create_supplier_admin_lock (); } TAO_EC_SupplierAdmin::~TAO_EC_SupplierAdmin (void) { - this->event_channel_->destroy_supplier_admin_lock (this->lock_); + this->event_channel_->destroy_proxy_push_consumer_collection (this->collection_); + this->collection_ = 0; } PortableServer::POA_ptr @@ -42,130 +43,54 @@ void TAO_EC_SupplierAdmin::connected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - ConsumerSetIterator end = this->end (); - for (ConsumerSetIterator i = this->begin (); - i != end; - ++i) - { - (*i)->connected (supplier, ACE_TRY_ENV); - ACE_CHECK; - supplier->connected (*i, ACE_TRY_ENV); - ACE_CHECK; - } + TAO_EC_Connect_Supplier worker (supplier); + this->collection_->for_each (&worker, ACE_TRY_ENV); } void TAO_EC_SupplierAdmin::reconnected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - ConsumerSetIterator end = this->end (); - for (ConsumerSetIterator i = this->begin (); - i != end; - ++i) - { - (*i)->reconnected (supplier, ACE_TRY_ENV); - ACE_CHECK; - supplier->reconnected (*i, ACE_TRY_ENV); - ACE_CHECK; - } + TAO_EC_Reconnect_Supplier worker (supplier); + this->collection_->for_each (&worker, ACE_TRY_ENV); } void TAO_EC_SupplierAdmin::disconnected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - ConsumerSetIterator end = this->end (); - for (ConsumerSetIterator i = this->begin (); - i != end; - ++i) - { - (*i)->disconnected (supplier, ACE_TRY_ENV); - ACE_CHECK; - supplier->disconnected (*i, ACE_TRY_ENV); - ACE_CHECK; - } + TAO_EC_Disconnect_Supplier worker (supplier); + this->collection_->for_each (&worker, ACE_TRY_ENV); } void TAO_EC_SupplierAdmin::connected (TAO_EC_ProxyPushConsumer *consumer, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->all_consumers_.insert (consumer) != 0) - ACE_THROW (CORBA::NO_MEMORY ()); + this->collection_->connected (consumer, ACE_TRY_ENV); } void TAO_EC_SupplierAdmin::reconnected (TAO_EC_ProxyPushConsumer *consumer, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->all_consumers_.insert (consumer) == -1) - ACE_THROW (CORBA::NO_MEMORY ()); + this->collection_->reconnected (consumer, ACE_TRY_ENV); } void TAO_EC_SupplierAdmin::disconnected (TAO_EC_ProxyPushConsumer *consumer, CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->all_consumers_.remove (consumer) != 0) - ACE_THROW (RtecEventChannelAdmin::EventChannel::SUBSCRIPTION_ERROR ()); + this->collection_->disconnected (consumer, ACE_TRY_ENV); } void TAO_EC_SupplierAdmin::shutdown (CORBA::Environment &ACE_TRY_ENV) { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; + TAO_EC_Shutdown_Consumer worker; - ConsumerSetIterator end = this->end (); - for (ConsumerSetIterator i = this->begin (); - i != end; - ++i) - { - ACE_TRY - { - (*i)->shutdown (ACE_TRY_ENV); - ACE_TRY_CHECK; - (*i)->_decr_refcnt (); - } - ACE_CATCHANY - { - /* ignore all exceptions */ - } - ACE_ENDTRY; - } - this->all_consumers_.reset (); + this->collection_->for_each (&worker, ACE_TRY_ENV); + this->collection_->shutdown (ACE_TRY_ENV); } RtecEventChannelAdmin::ProxyPushConsumer_ptr @@ -178,16 +103,62 @@ TAO_EC_SupplierAdmin::obtain_push_consumer (CORBA::Environment &ACE_TRY_ENV) return consumer->_this (ACE_TRY_ENV); } -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +// **************************************************************** -template class ACE_Node<TAO_EC_ProxyPushConsumer*>; -template class ACE_Unbounded_Set<TAO_EC_ProxyPushConsumer*>; -template class ACE_Unbounded_Set_Iterator<TAO_EC_ProxyPushConsumer*>; +void +TAO_EC_Connect_Supplier::work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV) +{ + consumer->connected (this->supplier_, ACE_TRY_ENV); + ACE_CHECK; + this->supplier_->connected (consumer, ACE_TRY_ENV); + ACE_CHECK; +} -#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +// **************************************************************** + +void +TAO_EC_Reconnect_Supplier::work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV) +{ + consumer->reconnected (this->supplier_, ACE_TRY_ENV); + ACE_CHECK; + this->supplier_->reconnected (consumer, ACE_TRY_ENV); + ACE_CHECK; +} + +// **************************************************************** + +void +TAO_EC_Disconnect_Supplier::work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV) +{ + consumer->disconnected (this->supplier_, ACE_TRY_ENV); + ACE_CHECK; + this->supplier_->disconnected (consumer, ACE_TRY_ENV); + ACE_CHECK; +} + +// **************************************************************** + +void +TAO_EC_Shutdown_Consumer::work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV) +{ + ACE_TRY + { + consumer->shutdown (ACE_TRY_ENV); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + // Ignore exceptions + } + ACE_ENDTRY; +} -#pragma instantiate ACE_Node<TAO_EC_ProxyPushConsumer*> -#pragma instantiate ACE_Unbounded_Set<TAO_EC_ProxyPushConsumer*> -#pragma instantiate ACE_Unbounded_Set_Iterator<TAO_EC_ProxyPushConsumer*> +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + +#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.h b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.h index c95e659cef4..87457a00510 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.h @@ -26,12 +26,14 @@ #define TAO_EC_SUPPLIERADMIN_H #include "orbsvcs/RtecEventChannelAdminS.h" -#include "orbsvcs/Event/EC_Filter.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ +#include "EC_Proxy_Collection.h" +#include "EC_Worker.h" + class TAO_EC_Event_Channel; class TAO_EC_ProxyPushSupplier; class TAO_EC_ProxyPushConsumer; @@ -63,8 +65,9 @@ public: virtual ~TAO_EC_SupplierAdmin (void); // destructor... - virtual PortableServer::POA_ptr _default_POA (CORBA::Environment& env); - // Override the ServantBase method. + void for_each (TAO_EC_Worker<TAO_EC_ProxyPushConsumer> *worker, + CORBA::Environment &ACE_TRY_ENV); + // For each elements call <worker->work()>. virtual void connected (TAO_EC_ProxyPushConsumer*, CORBA::Environment&); @@ -93,29 +96,97 @@ public: obtain_push_consumer (CORBA::Environment &) ACE_THROW_SPEC ((CORBA::SystemException)); - typedef ACE_Unbounded_Set<TAO_EC_ProxyPushConsumer*> ConsumerSet; - typedef ACE_Unbounded_Set_Iterator<TAO_EC_ProxyPushConsumer*> ConsumerSetIterator; - - ConsumerSetIterator begin (void); - ConsumerSetIterator end (void); - // Iterators over the set of ProxyPushConsumers - - typedef ACE_Lock Busy_Lock; - Busy_Lock &busy_lock (void); - // Get the lock + // = The PortableServer::ServantBase methods + virtual PortableServer::POA_ptr _default_POA (CORBA::Environment& env); private: TAO_EC_Event_Channel *event_channel_; // The Event Channel we belong to + typedef TAO_EC_Proxy_Collection<TAO_EC_ProxyPushConsumer> Collection; + + Collection *collection_; + // The consumer container + PortableServer::POA_var default_POA_; // Store the default POA. +}; + +// **************************************************************** + +class TAO_EC_Connect_Supplier : public TAO_EC_Worker<TAO_EC_ProxyPushConsumer> +{ + // = TITLE + // TAO_EC_Connect_Supplier + // + // = DESCRIPTION + // Worker class to connect the ProxyPushConsumer objects with all + // the ProxyPushConsumer objects in the collection. + // +public: + TAO_EC_Connect_Supplier (TAO_EC_ProxyPushSupplier *supplier); + // Constructor + + void work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_ProxyPushSupplier *supplier_; +}; + +// **************************************************************** - ACE_Lock* lock_; - // The locking strategy +class TAO_EC_Reconnect_Supplier : public TAO_EC_Worker<TAO_EC_ProxyPushConsumer> +{ + // = TITLE + // TAO_EC_Reconnect_Supplier + // + // = DESCRIPTION + // Worker class to reconnect the ProxyPushConsumer objects with all + // the ProxyPushConsumer objects in the collection. + // +public: + TAO_EC_Reconnect_Supplier (TAO_EC_ProxyPushSupplier *supplier); + // Constructor + + void work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_ProxyPushSupplier *supplier_; +}; + +// **************************************************************** + +class TAO_EC_Disconnect_Supplier : public TAO_EC_Worker<TAO_EC_ProxyPushConsumer> +{ + // = TITLE + // TAO_EC_Disconnect_Supplier + // + // = DESCRIPTION + // Worker class to disconnect the ProxyPushConsumer objects with all + // the ProxyPushConsumer objects in the collection. + // +public: + TAO_EC_Disconnect_Supplier (TAO_EC_ProxyPushSupplier *supplier); + // Constructor + + void work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV); + +private: + TAO_EC_ProxyPushSupplier *supplier_; +}; + +// **************************************************************** + +class TAO_EC_Shutdown_Consumer : public TAO_EC_Worker<TAO_EC_ProxyPushConsumer> +{ +public: + TAO_EC_Shutdown_Consumer (void); - ConsumerSet all_consumers_; - // The set of consumers... + void work (TAO_EC_ProxyPushConsumer *consumer, + CORBA::Environment &ACE_TRY_ENV); }; #if defined (__ACE_INLINE__) diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.i b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.i index 191470f85d9..5377f943532 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierAdmin.i @@ -1,20 +1,43 @@ // $Id$ -ACE_INLINE TAO_EC_SupplierAdmin::ConsumerSetIterator -TAO_EC_SupplierAdmin::begin (void) +ACE_INLINE void +TAO_EC_SupplierAdmin:: + for_each (TAO_EC_Worker<TAO_EC_ProxyPushConsumer> *worker, + CORBA::Environment &ACE_TRY_ENV) { - return this->all_consumers_.begin (); + this->collection_->for_each (worker, ACE_TRY_ENV); } -ACE_INLINE TAO_EC_SupplierAdmin::ConsumerSetIterator -TAO_EC_SupplierAdmin::end (void) +// **************************************************************** + +ACE_INLINE +TAO_EC_Connect_Supplier:: + TAO_EC_Connect_Supplier (TAO_EC_ProxyPushSupplier *supplier) + : supplier_ (supplier) { - return this->all_consumers_.end (); } -ACE_INLINE TAO_EC_SupplierAdmin::Busy_Lock& -TAO_EC_SupplierAdmin::busy_lock (void) +// **************************************************************** + +ACE_INLINE +TAO_EC_Reconnect_Supplier:: + TAO_EC_Reconnect_Supplier (TAO_EC_ProxyPushSupplier *supplier) + : supplier_ (supplier) { - return *this->lock_; } +// **************************************************************** + +ACE_INLINE +TAO_EC_Disconnect_Supplier:: + TAO_EC_Disconnect_Supplier (TAO_EC_ProxyPushSupplier *supplier) + : supplier_ (supplier) +{ +} + +// **************************************************************** + +ACE_INLINE +TAO_EC_Shutdown_Consumer::TAO_EC_Shutdown_Consumer (void) +{ +} diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierControl.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierControl.cpp index 37f0ffc0098..53c3e2ddd6e 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierControl.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierControl.cpp @@ -28,6 +28,12 @@ TAO_EC_SupplierControl::shutdown (void) return 0; } +void +TAO_EC_SupplierControl::supplier_not_exist (TAO_EC_ProxyPushConsumer *, + CORBA::Environment &) +{ +} + #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) #elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierControl.h b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierControl.h index 8a3353041e3..d7a358e6200 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_SupplierControl.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_SupplierControl.h @@ -58,6 +58,12 @@ public: virtual int shutdown (void); // Activate any internal threads or timers used to poll the state of // the suppliers + + virtual void supplier_not_exist (TAO_EC_ProxyPushConsumer *proxy, + CORBA::Environment &); + // Invoked by helper classes when they detect that a supplier does + // not exists (i.e. _non_existent() returns true and/or the + // CORBA::OBJECT_NOT_EXIST exception has been raised). }; #if defined (__ACE_INLINE__) diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.cpp index 22c4bc8409b..01d4c7ae1be 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.cpp @@ -1,6 +1,8 @@ // $Id$ #include "EC_Supplier_Filter.h" +#include "EC_ProxySupplier.h" +#include "EC_QOS_Info.h" #if ! defined (__ACE_INLINE__) #include "EC_Supplier_Filter.i" @@ -11,3 +13,14 @@ ACE_RCSID(Event, EC_Supplier_Filter, "$Id$") TAO_EC_Supplier_Filter::~TAO_EC_Supplier_Filter (void) { } + +// **************************************************************** + +void +TAO_EC_Filter_Worker::work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV) +{ + TAO_EC_QOS_Info qos_info = this->event_info_; + + supplier->filter (this->event_, qos_info, ACE_TRY_ENV); +} diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.h b/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.h index abcd4f4385e..11a8b91dac8 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.h +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.h @@ -30,6 +30,7 @@ #define TAO_EC_SUPPLIER_FILTER_H #include "orbsvcs/RtecEventCommC.h" +#include "EC_Worker.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once @@ -38,6 +39,7 @@ class TAO_EC_ProxyPushSupplier; class TAO_EC_ProxyPushConsumer; class TAO_EC_Event_Channel; +class TAO_EC_QOS_Info; class TAO_ORBSVCS_Export TAO_EC_Supplier_Filter { @@ -96,7 +98,7 @@ public: // information can simply ignore the message. virtual void connected (TAO_EC_ProxyPushSupplier *supplier, - CORBA::Environment &env) = 0; + CORBA::Environment &env) = 0; virtual void reconnected (TAO_EC_ProxyPushSupplier *supplier, CORBA::Environment &env) = 0; virtual void disconnected (TAO_EC_ProxyPushSupplier *supplier, @@ -118,6 +120,25 @@ public: // provided by the user. }; +// **************************************************************** + +class TAO_EC_Filter_Worker : public TAO_EC_Worker<TAO_EC_ProxyPushSupplier> +{ +public: + TAO_EC_Filter_Worker (RtecEventComm::EventSet &event, + const TAO_EC_QOS_Info &event_info); + + virtual void work (TAO_EC_ProxyPushSupplier *supplier, + CORBA::Environment &ACE_TRY_ENV); + +private: + RtecEventComm::EventSet &event_; + // The event we push on each case, use a reference to avoid copies. + + const TAO_EC_QOS_Info &event_info_; + // The QoS info propagated on each event. +}; + #if defined (__ACE_INLINE__) #include "EC_Supplier_Filter.i" #endif /* __ACE_INLINE__ */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.i b/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.i index cfa1da318d3..4e4eae7779b 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.i +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Supplier_Filter.i @@ -1 +1,9 @@ // $Id$ + +ACE_INLINE +TAO_EC_Filter_Worker::TAO_EC_Filter_Worker (RtecEventComm::EventSet &event, + const TAO_EC_QOS_Info &event_info) + : event_ (event), + event_info_ (event_info) +{ +} diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Trivial_Supplier_Filter.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Trivial_Supplier_Filter.cpp index a3a78c4dd26..e5ebc52546e 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_Trivial_Supplier_Filter.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Trivial_Supplier_Filter.cpp @@ -67,25 +67,11 @@ TAO_EC_Trivial_Supplier_Filter::push (const RtecEventComm::EventSet& event, ACE_const_cast(RtecEventComm::Event*, &e); RtecEventComm::EventSet single_event (1, 1, buffer, 0); - ACE_GUARD_THROW_EX ( - TAO_EC_ConsumerAdmin::Busy_Lock, - ace_mon, consumer_admin->busy_lock (), - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - TAO_EC_ConsumerAdmin::SupplierSetIterator end = - consumer_admin->end (); + TAO_EC_QOS_Info qos_info; - for (TAO_EC_ConsumerAdmin::SupplierSetIterator i = - consumer_admin->begin (); - i != end; - ++i) - { - TAO_EC_QOS_Info qos_info; - - (*i)->filter (single_event, qos_info, ACE_TRY_ENV); - ACE_CHECK; - } + TAO_EC_Filter_Worker worker (single_event, qos_info); + consumer_admin->for_each (&worker, ACE_TRY_ENV); + ACE_CHECK; } } diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Worker.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_Worker.cpp new file mode 100644 index 00000000000..a2d34aae38d --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Worker.cpp @@ -0,0 +1,19 @@ +// $Id$ + +#ifndef TAO_EC_WORKER_CPP +#define TAO_EC_WORKER_CPP + +#include "EC_Worker.h" + +#if ! defined (__ACE_INLINE__) +#include "EC_Worker.i" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(Event, EC_Worker, "$Id$") + +template<class TARGET> +TAO_EC_Worker<TARGET>::~TAO_EC_Worker (void) +{ +} + +#endif /* TAO_EC_WORKER_CPP */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Worker.h b/TAO/orbsvcs/orbsvcs/Event/EC_Worker.h new file mode 100644 index 00000000000..a763b6de99c --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Worker.h @@ -0,0 +1,51 @@ +/* -*- C++ -*- */ +// $Id$ +// +// ============================================================================ +// +// = LIBRARY +// ORBSVCS Real-time Event Channel +// +// = FILENAME +// EC_Worker +// +// = AUTHOR +// Carlos O'Ryan (coryan@cs.wustl.edu) +// +// = CREDITS +// http://www.cs.wustl.edu/~coryan/EC/index.html +// +// ============================================================================ + +#ifndef TAO_EC_WORKER_H +#define TAO_EC_WORKER_H + +#include "tao/corba.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +template<class TARGET> +class TAO_EC_Worker +{ +public: + virtual ~TAO_EC_Worker (void); + + virtual void work (TARGET *target, + CORBA::Environment &ACE_TRY_ENV) = 0; +}; + +#if defined (__ACE_INLINE__) +#include "EC_Worker.i" +#endif /* __ACE_INLINE__ */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "EC_Worker.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("EC_Worker.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#endif /* TAO_EC_WORKER_H */ diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_Worker.i b/TAO/orbsvcs/orbsvcs/Event/EC_Worker.i new file mode 100644 index 00000000000..cfa1da318d3 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/Event/EC_Worker.i @@ -0,0 +1 @@ +// $Id$ diff --git a/TAO/orbsvcs/orbsvcs/Makefile b/TAO/orbsvcs/orbsvcs/Makefile index 49ad09e46be..6077e74161d 100644 --- a/TAO/orbsvcs/orbsvcs/Makefile +++ b/TAO/orbsvcs/orbsvcs/Makefile @@ -101,7 +101,6 @@ ifneq (,$(findstring Event2,$(TAO_ORBSVCS))) Event/EC_Basic_Factory \ Event/EC_Default_Factory \ Event/EC_ObserverStrategy \ - Event/EC_ProxyPushSupplier_Set \ Event/EC_Per_Supplier_Filter \ Event/EC_Timeout_Filter \ Event/EC_Timeout_Generator \ @@ -4594,6 +4593,282 @@ ORBSVCS_COMPONENTS: CosPropertyServiceS_T.i CosPropertyServiceS_T.cpp \ CosPropertyServiceS.i +.obj/CosConcurrencyControlS.o .obj/CosConcurrencyControlS.so .shobj/CosConcurrencyControlS.o .shobj/CosConcurrencyControlS.so: CosConcurrencyControlS.cpp \ + CosConcurrencyControlS.h CosConcurrencyControlC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Record.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Log_Record.i \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Service_Config.i \ + $(ACE_ROOT)/ace/Reactor.h \ + $(ACE_ROOT)/ace/Handle_Set.h \ + $(ACE_ROOT)/ace/Handle_Set.i \ + $(ACE_ROOT)/ace/Timer_Queue.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.i \ + $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ + $(ACE_ROOT)/ace/Reactor.i \ + $(ACE_ROOT)/ace/Reactor_Impl.h \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/Interceptor.h \ + $(TAO_ROOT)/tao/InterceptorS.h \ + $(TAO_ROOT)/tao/InterceptorC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/InterceptorC.i \ + $(TAO_ROOT)/tao/Interceptor.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/Request.h \ + $(TAO_ROOT)/tao/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/ImplRepoC.h \ + $(TAO_ROOT)/tao/Operation_Table.h \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(ACE_ROOT)/ace/Message_Queue.h \ + $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ + $(ACE_ROOT)/ace/Message_Queue_T.h \ + $(ACE_ROOT)/ace/Message_Queue_T.i \ + $(ACE_ROOT)/ace/Message_Queue_T.cpp \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Strategies_T.i \ + $(ACE_ROOT)/ace/Strategies_T.cpp \ + $(ACE_ROOT)/ace/Service_Repository.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.i \ + $(ACE_ROOT)/ace/Service_Repository.i \ + $(ACE_ROOT)/ace/WFMO_Reactor.h \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/Profile.h \ + $(TAO_ROOT)/tao/Tagged_Components.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.i \ + $(TAO_ROOT)/tao/Tagged_Components.i \ + $(TAO_ROOT)/tao/Profile.i \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/TAOC.h \ + $(TAO_ROOT)/tao/TAOC.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/ImplRepoC.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/InterfaceC.h \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + orbsvcs_export.h CosConcurrencyControlC.i CosConcurrencyControlS_T.h \ + CosConcurrencyControlS_T.i CosConcurrencyControlS_T.cpp \ + CosConcurrencyControlS.i + .obj/CosNamingS.o .obj/CosNamingS.so .shobj/CosNamingS.o .shobj/CosNamingS.so: CosNamingS.cpp CosNamingS.h CosNamingC.h \ $(TAO_ROOT)/tao/corba.h \ $(ACE_ROOT)/ace/OS.h \ @@ -10377,6 +10652,280 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/tao/BoundsC.i \ orbsvcs_export.h CosPropertyServiceC.i +.obj/CosConcurrencyControlC.o .obj/CosConcurrencyControlC.so .shobj/CosConcurrencyControlC.o .shobj/CosConcurrencyControlC.so: CosConcurrencyControlC.cpp \ + CosConcurrencyControlC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Record.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Log_Record.i \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Service_Config.i \ + $(ACE_ROOT)/ace/Reactor.h \ + $(ACE_ROOT)/ace/Handle_Set.h \ + $(ACE_ROOT)/ace/Handle_Set.i \ + $(ACE_ROOT)/ace/Timer_Queue.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.i \ + $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ + $(ACE_ROOT)/ace/Reactor.i \ + $(ACE_ROOT)/ace/Reactor_Impl.h \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/Interceptor.h \ + $(TAO_ROOT)/tao/InterceptorS.h \ + $(TAO_ROOT)/tao/InterceptorC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/InterceptorC.i \ + $(TAO_ROOT)/tao/Interceptor.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/Request.h \ + $(TAO_ROOT)/tao/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/ImplRepoC.h \ + $(TAO_ROOT)/tao/Operation_Table.h \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(ACE_ROOT)/ace/Message_Queue.h \ + $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ + $(ACE_ROOT)/ace/Message_Queue_T.h \ + $(ACE_ROOT)/ace/Message_Queue_T.i \ + $(ACE_ROOT)/ace/Message_Queue_T.cpp \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Strategies_T.i \ + $(ACE_ROOT)/ace/Strategies_T.cpp \ + $(ACE_ROOT)/ace/Service_Repository.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.i \ + $(ACE_ROOT)/ace/Service_Repository.i \ + $(ACE_ROOT)/ace/WFMO_Reactor.h \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/Profile.h \ + $(TAO_ROOT)/tao/Tagged_Components.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.i \ + $(TAO_ROOT)/tao/Tagged_Components.i \ + $(TAO_ROOT)/tao/Profile.i \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/TAOC.h \ + $(TAO_ROOT)/tao/TAOC.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/ImplRepoC.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/InterfaceC.h \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + orbsvcs_export.h CosConcurrencyControlC.i + .obj/CosNamingC.o .obj/CosNamingC.so .shobj/CosNamingC.o .shobj/CosNamingC.so: CosNamingC.cpp CosNamingC.h \ $(TAO_ROOT)/tao/corba.h \ $(ACE_ROOT)/ace/OS.h \ @@ -12339,15 +12888,14 @@ ORBSVCS_COMPONENTS: Event/EC_Event_Channel.i Event/EC_Default_Factory.h \ Event/EC_Default_Factory.i Event/EC_Dispatching.h \ Event/EC_Dispatching.i Event/EC_ConsumerAdmin.h \ - Event/EC_ProxyPushSupplier_Set.h Event/EC_Busy_Lock.h \ - Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ConsumerAdmin.i \ - Event/EC_SupplierAdmin.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_Worker.h Event/EC_Worker.i \ + Event/EC_Worker.cpp Event/EC_ConsumerAdmin.i Event/EC_SupplierAdmin.h \ Event/EC_SupplierAdmin.i Event/EC_Timeout_Generator.h \ - Event/EC_Timeout_Filter.h Event/EC_Filter.h Event/EC_QOS_Info.h \ - Event/EC_QOS_Info.i Event/EC_Timeout_Filter.i \ + Event/EC_Timeout_Filter.h Event/EC_Filter.h Event/EC_Filter.i \ + Event/EC_QOS_Info.h Event/EC_QOS_Info.i Event/EC_Timeout_Filter.i \ Event/EC_Timeout_Generator.i Event/EC_ObserverStrategy.h \ $(ACE_ROOT)/ace/RB_Tree.h \ $(ACE_ROOT)/ace/RB_Tree.i \ @@ -12358,7 +12906,17 @@ ORBSVCS_COMPONENTS: .obj/EC_ConsumerAdmin.o .obj/EC_ConsumerAdmin.so .shobj/EC_ConsumerAdmin.o .shobj/EC_ConsumerAdmin.so: Event/EC_ConsumerAdmin.cpp \ Event/EC_ConsumerAdmin.h \ - $(ACE_ROOT)/ace/Containers.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ $(ACE_ROOT)/ace/Min_Max.h \ @@ -12371,14 +12929,9 @@ ORBSVCS_COMPONENTS: $(ACE_ROOT)/ace/Log_Record.h \ $(ACE_ROOT)/ace/Log_Priority.h \ $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ $(ACE_ROOT)/ace/Malloc.i \ $(ACE_ROOT)/ace/Malloc_T.h \ $(ACE_ROOT)/ace/Synch.h \ @@ -12402,20 +12955,15 @@ ORBSVCS_COMPONENTS: $(ACE_ROOT)/ace/Malloc_T.cpp \ $(ACE_ROOT)/ace/Memory_Pool.h \ $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ $(ACE_ROOT)/ace/Signal.i \ $(ACE_ROOT)/ace/Mem_Map.h \ $(ACE_ROOT)/ace/Mem_Map.i \ $(ACE_ROOT)/ace/Memory_Pool.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ - $(TAO_ROOT)/tao/TimeBaseS.h \ - $(TAO_ROOT)/tao/TimeBaseC.h \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/CDR.h \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Stream.h \ - $(ACE_ROOT)/ace/Message_Block.h \ $(ACE_ROOT)/ace/Message_Block.i \ $(ACE_ROOT)/ace/Message_Block_T.h \ $(ACE_ROOT)/ace/Message_Block_T.i \ @@ -12669,16 +13217,17 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ - Event/EC_ProxyPushSupplier_Set.h Event/EC_Busy_Lock.h \ - Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ConsumerAdmin.i \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_Worker.h Event/EC_Worker.i \ + Event/EC_Worker.cpp Event/EC_Defaults.h Event/EC_ConsumerAdmin.i \ Event/EC_ProxySupplier.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ Event/EC_ProxySupplier.i Event/EC_ProxyConsumer.h \ Event/EC_ProxyConsumer.i Event/EC_Event_Channel.h Event/EC_Factory.h \ - Event/EC_Factory.i Event/EC_Defaults.h Event/EC_Event_Channel.i \ - Event/EC_Command.h Event/EC_Command.i Event/EC_Command.cpp + Event/EC_Factory.i Event/EC_Event_Channel.i .obj/EC_SupplierAdmin.o .obj/EC_SupplierAdmin.so .shobj/EC_SupplierAdmin.o .shobj/EC_SupplierAdmin.so: Event/EC_SupplierAdmin.cpp \ Event/EC_SupplierAdmin.h \ @@ -12993,12 +13542,17 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_Worker.h Event/EC_Worker.i \ + Event/EC_Worker.cpp Event/EC_Defaults.h Event/EC_SupplierAdmin.i \ + Event/EC_ProxyConsumer.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ - Event/EC_SupplierAdmin.i Event/EC_ProxyConsumer.h \ Event/EC_ProxyConsumer.i Event/EC_ProxySupplier.h \ Event/EC_ProxySupplier.i Event/EC_Event_Channel.h Event/EC_Factory.h \ - Event/EC_Factory.i Event/EC_Defaults.h Event/EC_Event_Channel.i + Event/EC_Factory.i Event/EC_Event_Channel.i .obj/EC_ProxyConsumer.o .obj/EC_ProxyConsumer.so .shobj/EC_ProxyConsumer.o .shobj/EC_ProxyConsumer.so: Event/EC_ProxyConsumer.cpp \ Event/EC_ProxyConsumer.h \ @@ -13317,7 +13871,8 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ Event/EC_ProxyConsumer.i Event/EC_Event_Channel.h Event/EC_Factory.h \ Event/EC_Factory.i Event/EC_Defaults.h Event/EC_Event_Channel.i \ - Event/EC_Supplier_Filter.h Event/EC_Supplier_Filter.i \ + Event/EC_Supplier_Filter.h Event/EC_Worker.h Event/EC_Worker.i \ + Event/EC_Worker.cpp Event/EC_Supplier_Filter.i \ Event/EC_Supplier_Filter_Builder.h Event/EC_Supplier_Filter_Builder.i .obj/EC_ProxySupplier.o .obj/EC_ProxySupplier.so .shobj/EC_ProxySupplier.o .shobj/EC_ProxySupplier.so: Event/EC_ProxySupplier.cpp \ @@ -13921,7 +14476,45 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ - Event/EC_Supplier_Filter.i + Event/EC_Worker.h Event/EC_Worker.i Event/EC_Worker.cpp \ + Event/EC_Supplier_Filter.i Event/EC_ProxySupplier.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.h \ + $(TAO_ROOT)/tao/TimeBaseS_T.i \ + $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ + $(TAO_ROOT)/tao/TimeBaseS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ + Event/EC_ProxySupplier.i Event/EC_QOS_Info.h Event/EC_QOS_Info.i .obj/EC_Supplier_Filter_Builder.o .obj/EC_Supplier_Filter_Builder.so .shobj/EC_Supplier_Filter_Builder.o .shobj/EC_Supplier_Filter_Builder.so: Event/EC_Supplier_Filter_Builder.cpp \ Event/EC_Supplier_Filter_Builder.h \ @@ -14487,6 +15080,7 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ + Event/EC_Worker.h Event/EC_Worker.i Event/EC_Worker.cpp \ Event/EC_Supplier_Filter.i Event/EC_Supplier_Filter_Builder.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ @@ -14526,9 +15120,10 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ Event/EC_Event_Channel.i Event/EC_ConsumerAdmin.h \ - Event/EC_ProxyPushSupplier_Set.h Event/EC_Busy_Lock.h \ - Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ConsumerAdmin.i \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_ConsumerAdmin.i \ Event/EC_ProxySupplier.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ @@ -16254,7 +16849,8 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.i \ Event/EC_Filter_Builder.i Event/EC_Trivial_Supplier_Filter.h \ - Event/EC_Supplier_Filter.h Event/EC_Supplier_Filter.i \ + Event/EC_Supplier_Filter.h Event/EC_Worker.h Event/EC_Worker.i \ + Event/EC_Worker.cpp Event/EC_Supplier_Filter.i \ Event/EC_Supplier_Filter_Builder.h Event/EC_Supplier_Filter_Builder.i \ Event/EC_Trivial_Supplier_Filter.i Event/EC_ConsumerAdmin.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ @@ -16287,13 +16883,14 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ - Event/EC_ProxyPushSupplier_Set.h Event/EC_Busy_Lock.h \ - Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ConsumerAdmin.i \ - Event/EC_SupplierAdmin.h \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_Defaults.h Event/EC_ConsumerAdmin.i \ + Event/EC_SupplierAdmin.h Event/EC_SupplierAdmin.i \ + Event/EC_ProxyConsumer.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ - Event/EC_SupplierAdmin.i Event/EC_ProxyConsumer.h \ Event/EC_ProxyConsumer.i Event/EC_ProxySupplier.h \ Event/EC_ProxySupplier.i Event/EC_ObserverStrategy.h \ $(ACE_ROOT)/ace/RB_Tree.h \ @@ -16301,10 +16898,8 @@ ORBSVCS_COMPONENTS: $(ACE_ROOT)/ace/RB_Tree.cpp \ Event/EC_ObserverStrategy.i Event/EC_Null_Scheduling.h \ Event/EC_Scheduling_Strategy.h Event/EC_Scheduling_Strategy.i \ - Event/EC_Null_Scheduling.i Event/EC_ProxyPushSupplier_Set_T.h \ - Event/EC_ProxyPushSupplier_Set_T.i \ - Event/EC_ProxyPushSupplier_Set_T.cpp Event/EC_Command.h \ - Event/EC_Command.i Event/EC_Command.cpp \ + Event/EC_Null_Scheduling.i Event/EC_Concrete_Proxy_Set.h \ + Event/EC_Concrete_Proxy_Set.i Event/EC_Concrete_Proxy_Set.cpp \ Event/EC_Reactive_Timeout_Generator.h Event/EC_Timeout_Generator.h \ Event/EC_Timeout_Filter.h Event/EC_Filter.h Event/EC_QOS_Info.h \ Event/EC_QOS_Info.i Event/EC_Timeout_Filter.i \ @@ -18018,6 +18613,7 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.i \ Event/EC_Filter_Builder.i Event/EC_Basic_Filter_Builder.i \ Event/EC_Trivial_Supplier_Filter.h Event/EC_Supplier_Filter.h \ + Event/EC_Worker.h Event/EC_Worker.i Event/EC_Worker.cpp \ Event/EC_Supplier_Filter.i Event/EC_Supplier_Filter_Builder.h \ Event/EC_Supplier_Filter_Builder.i Event/EC_Trivial_Supplier_Filter.i \ Event/EC_ConsumerAdmin.h \ @@ -18051,13 +18647,14 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ - Event/EC_ProxyPushSupplier_Set.h Event/EC_Busy_Lock.h \ - Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ConsumerAdmin.i \ - Event/EC_SupplierAdmin.h \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_Defaults.h Event/EC_ConsumerAdmin.i \ + Event/EC_SupplierAdmin.h Event/EC_SupplierAdmin.i \ + Event/EC_ProxyConsumer.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ - Event/EC_SupplierAdmin.i Event/EC_ProxyConsumer.h \ Event/EC_ProxyConsumer.i Event/EC_ProxySupplier.h \ Event/EC_ProxySupplier.i Event/EC_ObserverStrategy.h \ $(ACE_ROOT)/ace/RB_Tree.h \ @@ -18065,10 +18662,8 @@ ORBSVCS_COMPONENTS: $(ACE_ROOT)/ace/RB_Tree.cpp \ Event/EC_ObserverStrategy.i Event/EC_Null_Scheduling.h \ Event/EC_Scheduling_Strategy.h Event/EC_Scheduling_Strategy.i \ - Event/EC_Null_Scheduling.i Event/EC_ProxyPushSupplier_Set_T.h \ - Event/EC_ProxyPushSupplier_Set_T.i \ - Event/EC_ProxyPushSupplier_Set_T.cpp Event/EC_Command.h \ - Event/EC_Command.i Event/EC_Command.cpp \ + Event/EC_Null_Scheduling.i Event/EC_Concrete_Proxy_Set.h \ + Event/EC_Concrete_Proxy_Set.i Event/EC_Concrete_Proxy_Set.cpp \ Event/EC_Reactive_Timeout_Generator.h Event/EC_Timeout_Generator.h \ Event/EC_Timeout_Filter.h Event/EC_Filter.h Event/EC_QOS_Info.h \ Event/EC_QOS_Info.i Event/EC_Timeout_Filter.i \ @@ -18412,13 +19007,14 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ - Event/EC_ProxyPushSupplier_Set.h Event/EC_Busy_Lock.h \ - Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ConsumerAdmin.i \ - Event/EC_SupplierAdmin.h \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_Worker.h Event/EC_Worker.i \ + Event/EC_Worker.cpp Event/EC_ConsumerAdmin.i Event/EC_SupplierAdmin.h \ + Event/EC_SupplierAdmin.i Event/EC_ProxyConsumer.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ - Event/EC_SupplierAdmin.i Event/EC_ProxyConsumer.h \ Event/EC_ProxyConsumer.i Event/EC_ProxySupplier.h \ Event/EC_ProxySupplier.i Event/EC_Trivial_Supplier_Filter.h \ Event/EC_Supplier_Filter.h Event/EC_Supplier_Filter.i \ @@ -18431,10 +19027,8 @@ ORBSVCS_COMPONENTS: Event/EC_ObserverStrategy.i Event/EC_Null_Scheduling.h \ Event/EC_Scheduling_Strategy.h Event/EC_Scheduling_Strategy.i \ Event/EC_Null_Scheduling.i Event/EC_Priority_Scheduling.h \ - Event/EC_Priority_Scheduling.i Event/EC_ProxyPushSupplier_Set_T.h \ - Event/EC_ProxyPushSupplier_Set_T.i \ - Event/EC_ProxyPushSupplier_Set_T.cpp Event/EC_Command.h \ - Event/EC_Command.i Event/EC_Command.cpp \ + Event/EC_Priority_Scheduling.i Event/EC_Concrete_Proxy_Set.h \ + Event/EC_Concrete_Proxy_Set.i Event/EC_Concrete_Proxy_Set.cpp \ Event/EC_Reactive_Timeout_Generator.h Event/EC_Timeout_Generator.h \ Event/EC_Timeout_Filter.h Event/EC_Filter.h Event/EC_QOS_Info.h \ Event/EC_QOS_Info.i Event/EC_Timeout_Filter.i \ @@ -18449,8 +19043,8 @@ ORBSVCS_COMPONENTS: $(ACE_ROOT)/ace/Sched_Params.i .obj/EC_ObserverStrategy.o .obj/EC_ObserverStrategy.so .shobj/EC_ObserverStrategy.o .shobj/EC_ObserverStrategy.so: Event/EC_ObserverStrategy.cpp \ - Event/EC_ObserverStrategy.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ + Event/EC_ObserverStrategy.h Event/EC_Worker.h \ + $(TAO_ROOT)/tao/corba.h \ $(ACE_ROOT)/ace/OS.h \ $(ACE_ROOT)/ace/inc_user_config.h \ $(ACE_ROOT)/ace/Min_Max.h \ @@ -18463,349 +19057,13 @@ ORBSVCS_COMPONENTS: $(ACE_ROOT)/ace/Log_Record.h \ $(ACE_ROOT)/ace/Log_Priority.h \ $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Map_Manager.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/RB_Tree.h \ - $(ACE_ROOT)/ace/Functor.h \ - $(ACE_ROOT)/ace/Functor.i \ - $(ACE_ROOT)/ace/Functor_T.h \ - $(ACE_ROOT)/ace/Functor_T.i \ - $(ACE_ROOT)/ace/Functor_T.cpp \ - $(ACE_ROOT)/ace/RB_Tree.i \ - $(ACE_ROOT)/ace/RB_Tree.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \ - $(TAO_ROOT)/tao/corba.h \ $(TAO_ROOT)/tao/corbafwd.h \ $(ACE_ROOT)/ace/CDR_Stream.h \ $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/Message_Block_T.h \ - $(ACE_ROOT)/ace/Message_Block_T.i \ - $(ACE_ROOT)/ace/Message_Block_T.cpp \ - $(ACE_ROOT)/ace/CDR_Stream.i \ - $(TAO_ROOT)/tao/try_macros.h \ - $(TAO_ROOT)/tao/orbconf.h \ - $(ACE_ROOT)/ace/CORBA_macros.h \ - $(TAO_ROOT)/tao/corbafwd.i \ - $(TAO_ROOT)/tao/Environment.h \ - $(TAO_ROOT)/tao/Environment.i \ - $(TAO_ROOT)/tao/ORB.h \ - $(TAO_ROOT)/tao/Exception.h \ - $(TAO_ROOT)/tao/Exception.i \ - $(TAO_ROOT)/tao/IOR_LookupTable.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.i \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ - $(TAO_ROOT)/tao/Services.h \ - $(TAO_ROOT)/tao/Sequence.h \ - $(TAO_ROOT)/tao/Managed_Types.h \ - $(TAO_ROOT)/tao/Managed_Types.i \ - $(TAO_ROOT)/tao/Sequence.i \ - $(TAO_ROOT)/tao/Sequence_T.h \ - $(TAO_ROOT)/tao/Sequence_T.i \ - $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/varout.h \ - $(TAO_ROOT)/tao/Object.h \ - $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/varout.i \ - $(TAO_ROOT)/tao/varout.cpp \ - $(TAO_ROOT)/tao/Services.i \ - $(TAO_ROOT)/tao/IORManipulation.h \ - $(TAO_ROOT)/tao/IORS.h \ - $(TAO_ROOT)/tao/IORC.h \ - $(TAO_ROOT)/tao/CDR.h \ - $(TAO_ROOT)/tao/Typecode.h \ - $(TAO_ROOT)/tao/Typecode.i \ - $(TAO_ROOT)/tao/CDR.i \ - $(TAO_ROOT)/tao/IORC.i \ - $(TAO_ROOT)/tao/Servant_Base.h \ - $(TAO_ROOT)/tao/POAC.h \ - $(TAO_ROOT)/tao/PolicyC.h \ - $(TAO_ROOT)/tao/CurrentC.h \ - $(TAO_ROOT)/tao/CurrentC.i \ - $(TAO_ROOT)/tao/PolicyC.i \ - $(TAO_ROOT)/tao/POAC.i \ - $(TAO_ROOT)/tao/Servant_Base.i \ - $(TAO_ROOT)/tao/IORS.i \ - $(TAO_ROOT)/tao/Interceptor.h \ - $(TAO_ROOT)/tao/InterceptorS.h \ - $(TAO_ROOT)/tao/InterceptorC.h \ - $(TAO_ROOT)/tao/IOPC.h \ - $(TAO_ROOT)/tao/IOPC.i \ - $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/Any.i \ - $(TAO_ROOT)/tao/InterceptorC.i \ - $(TAO_ROOT)/tao/Interceptor.i \ - $(TAO_ROOT)/tao/ORB.i \ - $(TAO_ROOT)/tao/NVList.h \ - $(TAO_ROOT)/tao/NVList.i \ - $(TAO_ROOT)/tao/Principal.h \ - $(TAO_ROOT)/tao/Principal.i \ - $(TAO_ROOT)/tao/Request.h \ - $(TAO_ROOT)/tao/Context.h \ - $(TAO_ROOT)/tao/Context.i \ - $(TAO_ROOT)/tao/MessagingC.h \ - $(TAO_ROOT)/tao/TimeBaseC.h \ - $(TAO_ROOT)/tao/TimeBaseC.i \ - $(TAO_ROOT)/tao/PollableC.h \ - $(TAO_ROOT)/tao/MessagingC.i \ - $(TAO_ROOT)/tao/Request.i \ - $(TAO_ROOT)/tao/Server_Request.h \ - $(TAO_ROOT)/tao/Object_KeyC.h \ - $(TAO_ROOT)/tao/Object_KeyC.i \ - $(TAO_ROOT)/tao/GIOP.h \ - $(TAO_ROOT)/tao/GIOP.i \ - $(TAO_ROOT)/tao/Server_Request.i \ - $(TAO_ROOT)/tao/Marshal.h \ - $(TAO_ROOT)/tao/Marshal.i \ - $(TAO_ROOT)/tao/singletons.h \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Singleton.cpp \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(TAO_ROOT)/tao/POA.h \ - $(TAO_ROOT)/tao/Object_Adapter.h \ - $(TAO_ROOT)/tao/Key_Adapters.h \ - $(ACE_ROOT)/ace/Map.h \ - $(ACE_ROOT)/ace/Map.i \ - $(ACE_ROOT)/ace/Map_T.h \ - $(ACE_ROOT)/ace/Pair.h \ - $(ACE_ROOT)/ace/Pair.i \ - $(ACE_ROOT)/ace/Pair_T.h \ - $(ACE_ROOT)/ace/Pair_T.i \ - $(ACE_ROOT)/ace/Pair_T.cpp \ - $(ACE_ROOT)/ace/Active_Map_Manager.h \ - $(ACE_ROOT)/ace/Active_Map_Manager.i \ - $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ - $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ - $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ - $(ACE_ROOT)/ace/Map_T.i \ - $(ACE_ROOT)/ace/Map_T.cpp \ - $(TAO_ROOT)/tao/Key_Adapters.i \ - $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ - $(TAO_ROOT)/tao/poa_macros.h \ - $(TAO_ROOT)/tao/POAS.h \ - $(TAO_ROOT)/tao/POA_CORBA.h \ - $(TAO_ROOT)/tao/DynAnyC.h \ - $(TAO_ROOT)/tao/DynAnyC.i \ - $(TAO_ROOT)/tao/DomainC.h \ - $(TAO_ROOT)/tao/DomainC.i \ - $(TAO_ROOT)/tao/POAS.i \ - $(TAO_ROOT)/tao/Active_Object_Map.h \ - $(TAO_ROOT)/tao/Active_Object_Map.i \ - $(TAO_ROOT)/tao/Object_Adapter.i \ - $(TAO_ROOT)/tao/POAManager.h \ - $(TAO_ROOT)/tao/POAManager.i \ - $(TAO_ROOT)/tao/ImplRepoC.h \ - $(TAO_ROOT)/tao/Operation_Table.h \ - $(TAO_ROOT)/tao/Stub.h \ - $(TAO_ROOT)/tao/Pluggable.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Message_Queue_T.h \ - $(ACE_ROOT)/ace/Message_Queue_T.i \ - $(ACE_ROOT)/ace/Message_Queue_T.cpp \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Synch_Options.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Strategies_T.i \ - $(ACE_ROOT)/ace/Strategies_T.cpp \ - $(ACE_ROOT)/ace/Service_Repository.h \ - $(ACE_ROOT)/ace/Service_Types.h \ - $(ACE_ROOT)/ace/Service_Types.i \ - $(ACE_ROOT)/ace/Service_Repository.i \ - $(ACE_ROOT)/ace/WFMO_Reactor.h \ - $(ACE_ROOT)/ace/WFMO_Reactor.i \ - $(ACE_ROOT)/ace/Strategies.i \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(TAO_ROOT)/tao/Pluggable.i \ - $(TAO_ROOT)/tao/MProfile.h \ - $(TAO_ROOT)/tao/Profile.h \ - $(TAO_ROOT)/tao/Tagged_Components.h \ - $(TAO_ROOT)/tao/CONV_FRAMEC.h \ - $(TAO_ROOT)/tao/CONV_FRAMEC.i \ - $(TAO_ROOT)/tao/Tagged_Components.i \ - $(TAO_ROOT)/tao/Profile.i \ - $(TAO_ROOT)/tao/MProfile.i \ - $(TAO_ROOT)/tao/Stub.i \ - $(TAO_ROOT)/tao/ORB_Core.h \ - $(TAO_ROOT)/tao/Policy_Manager.h \ - $(TAO_ROOT)/tao/Policy_Manager.i \ - $(TAO_ROOT)/tao/Resource_Factory.h \ - $(TAO_ROOT)/tao/Protocol_Factory.h \ - $(TAO_ROOT)/tao/params.h \ - $(TAO_ROOT)/tao/params.i \ - $(TAO_ROOT)/tao/ORB_Core.i \ - $(ACE_ROOT)/ace/Dynamic_Service.h \ - $(ACE_ROOT)/ace/Dynamic_Service.cpp \ - $(TAO_ROOT)/tao/Invocation.h \ - $(TAO_ROOT)/tao/Reply_Dispatcher.h \ - $(TAO_ROOT)/tao/Reply_Dispatcher.i \ - $(TAO_ROOT)/tao/TAOC.h \ - $(TAO_ROOT)/tao/TAOC.i \ - $(TAO_ROOT)/tao/Invocation.i \ - $(TAO_ROOT)/tao/ImplRepoC.i \ - $(TAO_ROOT)/tao/POA.i \ - $(TAO_ROOT)/tao/debug.h \ - $(TAO_ROOT)/tao/Client_Strategy_Factory.h \ - $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ - $(TAO_ROOT)/tao/DynAny_i.h \ - $(TAO_ROOT)/tao/Union.h \ - $(TAO_ROOT)/tao/ValueBase.h \ - $(TAO_ROOT)/tao/ValueBase.i \ - $(TAO_ROOT)/tao/ValueFactory.h \ - $(TAO_ROOT)/tao/ValueFactory.i \ - $(TAO_ROOT)/tao/ObjectIDList.h \ - $(TAO_ROOT)/tao/ObjectIDList.i \ - $(TAO_ROOT)/tao/WrongTransactionC.h \ - $(TAO_ROOT)/tao/InterfaceC.h \ - $(TAO_ROOT)/tao/BoundsC.h \ - $(TAO_ROOT)/tao/BoundsC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.i \ - Event/EC_ObserverStrategy.i Event/EC_Event_Channel.h \ - Event/EC_Factory.h Event/EC_Factory.i Event/EC_Defaults.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ - $(TAO_ROOT)/tao/TimeBaseS.h \ - $(TAO_ROOT)/tao/TimeBaseS_T.h \ - $(TAO_ROOT)/tao/TimeBaseS_T.i \ - $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ - $(TAO_ROOT)/tao/TimeBaseS.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ - Event/EC_Event_Channel.i Event/EC_ProxySupplier.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ - Event/EC_ProxySupplier.i Event/EC_ProxyConsumer.h \ - Event/EC_ProxyConsumer.i Event/EC_ConsumerAdmin.h \ - Event/EC_ProxyPushSupplier_Set.h Event/EC_Busy_Lock.h \ - Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ConsumerAdmin.i \ - Event/EC_SupplierAdmin.h Event/EC_SupplierAdmin.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Service_Constants.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.i \ - $(ACE_ROOT)/ace/Auto_Ptr.h \ - $(ACE_ROOT)/ace/Auto_Ptr.i \ - $(ACE_ROOT)/ace/Auto_Ptr.cpp - -.obj/EC_ProxyPushSupplier_Set.o .obj/EC_ProxyPushSupplier_Set.so .shobj/EC_ProxyPushSupplier_Set.o .shobj/EC_ProxyPushSupplier_Set.so: Event/EC_ProxyPushSupplier_Set.cpp \ - Event/EC_ProxyPushSupplier_Set.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/Min_Max.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ $(ACE_ROOT)/ace/ACE.h \ $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ $(ACE_ROOT)/ace/Malloc.i \ $(ACE_ROOT)/ace/Malloc_T.h \ $(ACE_ROOT)/ace/Synch.h \ @@ -18829,14 +19087,15 @@ ORBSVCS_COMPONENTS: $(ACE_ROOT)/ace/Malloc_T.cpp \ $(ACE_ROOT)/ace/Memory_Pool.h \ $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ $(ACE_ROOT)/ace/Signal.i \ $(ACE_ROOT)/ace/Mem_Map.h \ $(ACE_ROOT)/ace/Mem_Map.i \ $(ACE_ROOT)/ace/Memory_Pool.i \ - $(TAO_ROOT)/tao/corba.h \ - $(TAO_ROOT)/tao/corbafwd.h \ - $(ACE_ROOT)/ace/CDR_Stream.h \ - $(ACE_ROOT)/ace/Message_Block.h \ $(ACE_ROOT)/ace/Message_Block.i \ $(ACE_ROOT)/ace/Message_Block_T.h \ $(ACE_ROOT)/ace/Message_Block_T.i \ @@ -19055,9 +19314,23 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/tao/InterfaceC.h \ $(TAO_ROOT)/tao/BoundsC.h \ $(TAO_ROOT)/tao/BoundsC.i \ - Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_Defaults.h \ - Event/EC_ProxySupplier.h \ + Event/EC_Worker.i Event/EC_Worker.cpp \ + $(ACE_ROOT)/ace/RB_Tree.h \ + $(ACE_ROOT)/ace/RB_Tree.i \ + $(ACE_ROOT)/ace/RB_Tree.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.i \ + Event/EC_ObserverStrategy.i Event/EC_Event_Channel.h \ + Event/EC_Factory.h Event/EC_Factory.i Event/EC_Defaults.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.h \ @@ -19066,42 +19339,44 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/tao/TimeBaseS_T.i \ $(TAO_ROOT)/tao/TimeBaseS_T.cpp \ $(TAO_ROOT)/tao/TimeBaseS.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseS.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataS.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommS.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerS.i \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \ - $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ + Event/EC_Event_Channel.i Event/EC_ProxySupplier.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ - Event/EC_ProxySupplier.i Event/EC_Command.h Event/EC_Command.i \ - Event/EC_Command.cpp + Event/EC_ProxySupplier.i Event/EC_ProxyConsumer.h \ + Event/EC_ProxyConsumer.i Event/EC_ConsumerAdmin.h \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_ConsumerAdmin.i \ + Event/EC_SupplierAdmin.h Event/EC_SupplierAdmin.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Service_Constants.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.i \ + $(ACE_ROOT)/ace/Auto_Ptr.h \ + $(ACE_ROOT)/ace/Auto_Ptr.i \ + $(ACE_ROOT)/ace/Auto_Ptr.cpp .obj/EC_Per_Supplier_Filter.o .obj/EC_Per_Supplier_Filter.so .shobj/EC_Per_Supplier_Filter.o .shobj/EC_Per_Supplier_Filter.so: Event/EC_Per_Supplier_Filter.cpp \ Event/EC_Per_Supplier_Filter.h Event/EC_Supplier_Filter.h \ @@ -19382,6 +19657,7 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecDefaultEventDataC.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventCommC.i \ + Event/EC_Worker.h Event/EC_Worker.i Event/EC_Worker.cpp \ Event/EC_Supplier_Filter.i Event/EC_Supplier_Filter_Builder.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminC.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecSchedulerC.h \ @@ -19420,15 +19696,16 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ - Event/EC_Event_Channel.i Event/EC_ProxyPushSupplier_Set.h \ - Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ProxySupplier.h \ + Event/EC_Event_Channel.i Event/EC_ProxySupplier.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ Event/EC_ProxySupplier.i Event/EC_ProxyConsumer.h \ Event/EC_ProxyConsumer.i Event/EC_Scheduling_Strategy.h \ - Event/EC_Scheduling_Strategy.i Event/EC_QOS_Info.h \ - Event/EC_QOS_Info.i \ + Event/EC_Scheduling_Strategy.i Event/EC_Proxy_Collection.h \ + Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ + Event/EC_Proxy_Collection.i Event/EC_Proxy_Collection.cpp \ + Event/EC_Command.h Event/EC_Command.i Event/EC_Command.cpp \ + Event/EC_QOS_Info.h Event/EC_QOS_Info.i \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event_Service_Constants.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.i @@ -23615,7 +23892,8 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/tao/InterfaceC.h \ $(TAO_ROOT)/tao/BoundsC.h \ $(TAO_ROOT)/tao/BoundsC.i \ - Event/EC_ConsumerControl.i Event/EC_Reactive_ConsumerControl.i \ + Event/EC_ConsumerControl.i Event/EC_Worker.h Event/EC_Worker.i \ + Event/EC_Worker.cpp Event/EC_Reactive_ConsumerControl.i \ Event/EC_Event_Channel.h Event/EC_Factory.h Event/EC_Factory.i \ Event/EC_Defaults.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ @@ -23659,9 +23937,10 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ Event/EC_Event_Channel.i Event/EC_ConsumerAdmin.h \ - Event/EC_ProxyPushSupplier_Set.h Event/EC_Busy_Lock.h \ - Event/EC_Busy_Lock.i Event/EC_Busy_Lock.cpp \ - Event/EC_ProxyPushSupplier_Set.i Event/EC_ConsumerAdmin.i \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_ConsumerAdmin.i \ Event/EC_ProxySupplier.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ @@ -23940,7 +24219,8 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/tao/InterfaceC.h \ $(TAO_ROOT)/tao/BoundsC.h \ $(TAO_ROOT)/tao/BoundsC.i \ - Event/EC_SupplierControl.i Event/EC_Reactive_SupplierControl.i \ + Event/EC_SupplierControl.i Event/EC_Worker.h Event/EC_Worker.i \ + Event/EC_Worker.cpp Event/EC_Reactive_SupplierControl.i \ Event/EC_Event_Channel.h Event/EC_Factory.h Event/EC_Factory.i \ Event/EC_Defaults.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.h \ @@ -23984,9 +24264,13 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/RtecEventChannelAdminS.i \ Event/EC_Event_Channel.i Event/EC_SupplierAdmin.h \ + Event/EC_Proxy_Collection.h Event/EC_Busy_Lock.h Event/EC_Busy_Lock.i \ + Event/EC_Busy_Lock.cpp Event/EC_Proxy_Collection.i \ + Event/EC_Proxy_Collection.cpp Event/EC_Command.h Event/EC_Command.i \ + Event/EC_Command.cpp Event/EC_SupplierAdmin.i \ + Event/EC_ProxyConsumer.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/Event/EC_Filter.i \ - Event/EC_SupplierAdmin.i Event/EC_ProxyConsumer.h \ Event/EC_ProxyConsumer.i .obj/ConsumerAdmin_i.o .obj/ConsumerAdmin_i.so .shobj/ConsumerAdmin_i.o .shobj/ConsumerAdmin_i.so: CosEvent/ConsumerAdmin_i.cpp \ @@ -38882,6 +39166,1128 @@ ORBSVCS_COMPONENTS: $(TAO_ROOT)/orbsvcs/orbsvcs/CosPropertyServiceS_T.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/CosPropertyServiceS.i +.obj/CC_Lock.o .obj/CC_Lock.so .shobj/CC_Lock.o .shobj/CC_Lock.so: Concurrency/CC_Lock.cpp Concurrency/CC_Lock.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Record.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Log_Record.i \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Service_Config.i \ + $(ACE_ROOT)/ace/Reactor.h \ + $(ACE_ROOT)/ace/Handle_Set.h \ + $(ACE_ROOT)/ace/Handle_Set.i \ + $(ACE_ROOT)/ace/Timer_Queue.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.i \ + $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ + $(ACE_ROOT)/ace/Reactor.i \ + $(ACE_ROOT)/ace/Reactor_Impl.h \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/Interceptor.h \ + $(TAO_ROOT)/tao/InterceptorS.h \ + $(TAO_ROOT)/tao/InterceptorC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/InterceptorC.i \ + $(TAO_ROOT)/tao/Interceptor.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/Request.h \ + $(TAO_ROOT)/tao/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/ImplRepoC.h \ + $(TAO_ROOT)/tao/Operation_Table.h \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(ACE_ROOT)/ace/Message_Queue.h \ + $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ + $(ACE_ROOT)/ace/Message_Queue_T.h \ + $(ACE_ROOT)/ace/Message_Queue_T.i \ + $(ACE_ROOT)/ace/Message_Queue_T.cpp \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Strategies_T.i \ + $(ACE_ROOT)/ace/Strategies_T.cpp \ + $(ACE_ROOT)/ace/Service_Repository.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.i \ + $(ACE_ROOT)/ace/Service_Repository.i \ + $(ACE_ROOT)/ace/WFMO_Reactor.h \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/Profile.h \ + $(TAO_ROOT)/tao/Tagged_Components.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.i \ + $(TAO_ROOT)/tao/Tagged_Components.i \ + $(TAO_ROOT)/tao/Profile.i \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/TAOC.h \ + $(TAO_ROOT)/tao/TAOC.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/ImplRepoC.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/InterfaceC.h \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlC.i + +.obj/CC_LockSet.o .obj/CC_LockSet.so .shobj/CC_LockSet.o .shobj/CC_LockSet.so: Concurrency/CC_LockSet.cpp Concurrency/CC_LockSet.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Record.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Log_Record.i \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Token.h \ + $(ACE_ROOT)/ace/Token.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Service_Config.i \ + $(ACE_ROOT)/ace/Reactor.h \ + $(ACE_ROOT)/ace/Handle_Set.h \ + $(ACE_ROOT)/ace/Handle_Set.i \ + $(ACE_ROOT)/ace/Timer_Queue.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.i \ + $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ + $(ACE_ROOT)/ace/Reactor.i \ + $(ACE_ROOT)/ace/Reactor_Impl.h \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/Interceptor.h \ + $(TAO_ROOT)/tao/InterceptorS.h \ + $(TAO_ROOT)/tao/InterceptorC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/InterceptorC.i \ + $(TAO_ROOT)/tao/Interceptor.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/Request.h \ + $(TAO_ROOT)/tao/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/ImplRepoC.h \ + $(TAO_ROOT)/tao/Operation_Table.h \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(ACE_ROOT)/ace/Message_Queue.h \ + $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ + $(ACE_ROOT)/ace/Message_Queue_T.h \ + $(ACE_ROOT)/ace/Message_Queue_T.i \ + $(ACE_ROOT)/ace/Message_Queue_T.cpp \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Strategies_T.i \ + $(ACE_ROOT)/ace/Strategies_T.cpp \ + $(ACE_ROOT)/ace/Service_Repository.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.i \ + $(ACE_ROOT)/ace/Service_Repository.i \ + $(ACE_ROOT)/ace/WFMO_Reactor.h \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/Profile.h \ + $(TAO_ROOT)/tao/Tagged_Components.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.i \ + $(TAO_ROOT)/tao/Tagged_Components.i \ + $(TAO_ROOT)/tao/Profile.i \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/TAOC.h \ + $(TAO_ROOT)/tao/TAOC.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/ImplRepoC.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/InterfaceC.h \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS.i + +.obj/CC_LockSetFactory.o .obj/CC_LockSetFactory.so .shobj/CC_LockSetFactory.o .shobj/CC_LockSetFactory.so: Concurrency/CC_LockSetFactory.cpp \ + Concurrency/CC_LockSetFactory.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Record.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Log_Record.i \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Service_Config.i \ + $(ACE_ROOT)/ace/Reactor.h \ + $(ACE_ROOT)/ace/Handle_Set.h \ + $(ACE_ROOT)/ace/Handle_Set.i \ + $(ACE_ROOT)/ace/Timer_Queue.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.i \ + $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ + $(ACE_ROOT)/ace/Reactor.i \ + $(ACE_ROOT)/ace/Reactor_Impl.h \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/Interceptor.h \ + $(TAO_ROOT)/tao/InterceptorS.h \ + $(TAO_ROOT)/tao/InterceptorC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/InterceptorC.i \ + $(TAO_ROOT)/tao/Interceptor.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/Request.h \ + $(TAO_ROOT)/tao/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/ImplRepoC.h \ + $(TAO_ROOT)/tao/Operation_Table.h \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(ACE_ROOT)/ace/Message_Queue.h \ + $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ + $(ACE_ROOT)/ace/Message_Queue_T.h \ + $(ACE_ROOT)/ace/Message_Queue_T.i \ + $(ACE_ROOT)/ace/Message_Queue_T.cpp \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Strategies_T.i \ + $(ACE_ROOT)/ace/Strategies_T.cpp \ + $(ACE_ROOT)/ace/Service_Repository.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.i \ + $(ACE_ROOT)/ace/Service_Repository.i \ + $(ACE_ROOT)/ace/WFMO_Reactor.h \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/Profile.h \ + $(TAO_ROOT)/tao/Tagged_Components.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.i \ + $(TAO_ROOT)/tao/Tagged_Components.i \ + $(TAO_ROOT)/tao/Profile.i \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/TAOC.h \ + $(TAO_ROOT)/tao/TAOC.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/ImplRepoC.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/InterfaceC.h \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS.i \ + Concurrency/CC_LockSet.h \ + $(ACE_ROOT)/ace/Token.h \ + $(ACE_ROOT)/ace/Token.i + +.obj/Concurrency_Utils.o .obj/Concurrency_Utils.so .shobj/Concurrency_Utils.o .shobj/Concurrency_Utils.so: Concurrency/Concurrency_Utils.cpp \ + $(ACE_ROOT)/ace/streams.h \ + $(ACE_ROOT)/ace/inc_user_config.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlC.h \ + $(TAO_ROOT)/tao/corba.h \ + $(ACE_ROOT)/ace/OS.h \ + $(ACE_ROOT)/ace/Min_Max.h \ + $(ACE_ROOT)/ace/Basic_Types.h \ + $(ACE_ROOT)/ace/Basic_Types.i \ + $(ACE_ROOT)/ace/Trace.h \ + $(ACE_ROOT)/ace/OS.i \ + $(ACE_ROOT)/ace/Log_Msg.h \ + $(ACE_ROOT)/ace/Log_Record.h \ + $(ACE_ROOT)/ace/Log_Priority.h \ + $(ACE_ROOT)/ace/Log_Record.i \ + $(TAO_ROOT)/tao/corbafwd.h \ + $(ACE_ROOT)/ace/CDR_Stream.h \ + $(ACE_ROOT)/ace/Message_Block.h \ + $(ACE_ROOT)/ace/ACE.h \ + $(ACE_ROOT)/ace/ACE.i \ + $(ACE_ROOT)/ace/Malloc.h \ + $(ACE_ROOT)/ace/Malloc_Base.h \ + $(ACE_ROOT)/ace/Malloc.i \ + $(ACE_ROOT)/ace/Malloc_T.h \ + $(ACE_ROOT)/ace/Synch.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ + $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ + $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ + $(ACE_ROOT)/ace/Synch.i \ + $(ACE_ROOT)/ace/Synch_T.h \ + $(ACE_ROOT)/ace/Event_Handler.h \ + $(ACE_ROOT)/ace/Event_Handler.i \ + $(ACE_ROOT)/ace/Synch_T.i \ + $(ACE_ROOT)/ace/Thread.h \ + $(ACE_ROOT)/ace/Thread.i \ + $(ACE_ROOT)/ace/Atomic_Op.i \ + $(ACE_ROOT)/ace/Synch_T.cpp \ + $(ACE_ROOT)/ace/Free_List.h \ + $(ACE_ROOT)/ace/Free_List.i \ + $(ACE_ROOT)/ace/Free_List.cpp \ + $(ACE_ROOT)/ace/Malloc_T.i \ + $(ACE_ROOT)/ace/Malloc_T.cpp \ + $(ACE_ROOT)/ace/Memory_Pool.h \ + $(ACE_ROOT)/ace/Signal.h \ + $(ACE_ROOT)/ace/Containers.h \ + $(ACE_ROOT)/ace/Containers.i \ + $(ACE_ROOT)/ace/Containers_T.h \ + $(ACE_ROOT)/ace/Containers_T.i \ + $(ACE_ROOT)/ace/Containers_T.cpp \ + $(ACE_ROOT)/ace/Signal.i \ + $(ACE_ROOT)/ace/Mem_Map.h \ + $(ACE_ROOT)/ace/Mem_Map.i \ + $(ACE_ROOT)/ace/Memory_Pool.i \ + $(ACE_ROOT)/ace/Message_Block.i \ + $(ACE_ROOT)/ace/Message_Block_T.h \ + $(ACE_ROOT)/ace/Message_Block_T.i \ + $(ACE_ROOT)/ace/Message_Block_T.cpp \ + $(ACE_ROOT)/ace/SString.h \ + $(ACE_ROOT)/ace/SString.i \ + $(ACE_ROOT)/ace/CDR_Stream.i \ + $(TAO_ROOT)/tao/try_macros.h \ + $(TAO_ROOT)/tao/orbconf.h \ + $(ACE_ROOT)/ace/CORBA_macros.h \ + $(TAO_ROOT)/tao/corbafwd.i \ + $(TAO_ROOT)/tao/Environment.h \ + $(TAO_ROOT)/tao/Environment.i \ + $(TAO_ROOT)/tao/ORB.h \ + $(TAO_ROOT)/tao/Exception.h \ + $(TAO_ROOT)/tao/Exception.i \ + $(TAO_ROOT)/tao/IOR_LookupTable.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager.h \ + $(ACE_ROOT)/ace/Functor.h \ + $(ACE_ROOT)/ace/Functor.i \ + $(ACE_ROOT)/ace/Functor_T.h \ + $(ACE_ROOT)/ace/Functor_T.i \ + $(ACE_ROOT)/ace/Functor_T.cpp \ + $(ACE_ROOT)/ace/Hash_Map_Manager.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Service_Config.h \ + $(ACE_ROOT)/ace/Service_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.h \ + $(ACE_ROOT)/ace/Shared_Object.i \ + $(ACE_ROOT)/ace/Service_Object.i \ + $(ACE_ROOT)/ace/Service_Config.i \ + $(ACE_ROOT)/ace/Reactor.h \ + $(ACE_ROOT)/ace/Handle_Set.h \ + $(ACE_ROOT)/ace/Handle_Set.i \ + $(ACE_ROOT)/ace/Timer_Queue.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.h \ + $(ACE_ROOT)/ace/Timer_Queue_T.i \ + $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ + $(ACE_ROOT)/ace/Reactor.i \ + $(ACE_ROOT)/ace/Reactor_Impl.h \ + $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ + $(TAO_ROOT)/tao/Services.h \ + $(TAO_ROOT)/tao/Sequence.h \ + $(TAO_ROOT)/tao/Managed_Types.h \ + $(TAO_ROOT)/tao/Managed_Types.i \ + $(TAO_ROOT)/tao/Sequence.i \ + $(TAO_ROOT)/tao/Sequence_T.h \ + $(TAO_ROOT)/tao/Sequence_T.i \ + $(TAO_ROOT)/tao/Sequence_T.cpp \ + $(TAO_ROOT)/tao/varout.h \ + $(TAO_ROOT)/tao/Object.h \ + $(TAO_ROOT)/tao/Object.i \ + $(TAO_ROOT)/tao/varout.i \ + $(TAO_ROOT)/tao/varout.cpp \ + $(TAO_ROOT)/tao/Services.i \ + $(TAO_ROOT)/tao/IORManipulation.h \ + $(TAO_ROOT)/tao/IORS.h \ + $(TAO_ROOT)/tao/IORC.h \ + $(TAO_ROOT)/tao/CDR.h \ + $(TAO_ROOT)/tao/Typecode.h \ + $(TAO_ROOT)/tao/Typecode.i \ + $(TAO_ROOT)/tao/CDR.i \ + $(TAO_ROOT)/tao/IORC.i \ + $(TAO_ROOT)/tao/Servant_Base.h \ + $(TAO_ROOT)/tao/POAC.h \ + $(TAO_ROOT)/tao/PolicyC.h \ + $(TAO_ROOT)/tao/CurrentC.h \ + $(TAO_ROOT)/tao/CurrentC.i \ + $(TAO_ROOT)/tao/PolicyC.i \ + $(TAO_ROOT)/tao/POAC.i \ + $(TAO_ROOT)/tao/Servant_Base.i \ + $(TAO_ROOT)/tao/IORS.i \ + $(TAO_ROOT)/tao/Interceptor.h \ + $(TAO_ROOT)/tao/InterceptorS.h \ + $(TAO_ROOT)/tao/InterceptorC.h \ + $(TAO_ROOT)/tao/IOPC.h \ + $(TAO_ROOT)/tao/IOPC.i \ + $(TAO_ROOT)/tao/Any.h \ + $(TAO_ROOT)/tao/Any.i \ + $(TAO_ROOT)/tao/InterceptorC.i \ + $(TAO_ROOT)/tao/Interceptor.i \ + $(TAO_ROOT)/tao/ORB.i \ + $(TAO_ROOT)/tao/NVList.h \ + $(TAO_ROOT)/tao/NVList.i \ + $(TAO_ROOT)/tao/Principal.h \ + $(TAO_ROOT)/tao/Principal.i \ + $(TAO_ROOT)/tao/Request.h \ + $(TAO_ROOT)/tao/Context.h \ + $(TAO_ROOT)/tao/Context.i \ + $(TAO_ROOT)/tao/MessagingC.h \ + $(TAO_ROOT)/tao/TimeBaseC.h \ + $(TAO_ROOT)/tao/TimeBaseC.i \ + $(TAO_ROOT)/tao/PollableC.h \ + $(TAO_ROOT)/tao/MessagingC.i \ + $(TAO_ROOT)/tao/Request.i \ + $(TAO_ROOT)/tao/Server_Request.h \ + $(TAO_ROOT)/tao/Object_KeyC.h \ + $(TAO_ROOT)/tao/Object_KeyC.i \ + $(TAO_ROOT)/tao/GIOP.h \ + $(TAO_ROOT)/tao/GIOP.i \ + $(TAO_ROOT)/tao/Server_Request.i \ + $(TAO_ROOT)/tao/Marshal.h \ + $(TAO_ROOT)/tao/Marshal.i \ + $(TAO_ROOT)/tao/singletons.h \ + $(ACE_ROOT)/ace/Singleton.h \ + $(ACE_ROOT)/ace/Singleton.i \ + $(ACE_ROOT)/ace/Singleton.cpp \ + $(ACE_ROOT)/ace/Object_Manager.h \ + $(ACE_ROOT)/ace/Object_Manager.i \ + $(ACE_ROOT)/ace/Managed_Object.h \ + $(ACE_ROOT)/ace/Managed_Object.i \ + $(ACE_ROOT)/ace/Managed_Object.cpp \ + $(TAO_ROOT)/tao/POA.h \ + $(TAO_ROOT)/tao/Object_Adapter.h \ + $(TAO_ROOT)/tao/Key_Adapters.h \ + $(ACE_ROOT)/ace/Map.h \ + $(ACE_ROOT)/ace/Map.i \ + $(ACE_ROOT)/ace/Map_T.h \ + $(ACE_ROOT)/ace/Pair.h \ + $(ACE_ROOT)/ace/Pair.i \ + $(ACE_ROOT)/ace/Pair_T.h \ + $(ACE_ROOT)/ace/Pair_T.i \ + $(ACE_ROOT)/ace/Pair_T.cpp \ + $(ACE_ROOT)/ace/Map_Manager.h \ + $(ACE_ROOT)/ace/Map_Manager.i \ + $(ACE_ROOT)/ace/Map_Manager.cpp \ + $(ACE_ROOT)/ace/Active_Map_Manager.h \ + $(ACE_ROOT)/ace/Active_Map_Manager.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.h \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.i \ + $(ACE_ROOT)/ace/Active_Map_Manager_T.cpp \ + $(ACE_ROOT)/ace/Map_T.i \ + $(ACE_ROOT)/ace/Map_T.cpp \ + $(TAO_ROOT)/tao/Key_Adapters.i \ + $(TAO_ROOT)/tao/Server_Strategy_Factory.h \ + $(TAO_ROOT)/tao/poa_macros.h \ + $(TAO_ROOT)/tao/POAS.h \ + $(TAO_ROOT)/tao/POA_CORBA.h \ + $(TAO_ROOT)/tao/DynAnyC.h \ + $(TAO_ROOT)/tao/DynAnyC.i \ + $(TAO_ROOT)/tao/DomainC.h \ + $(TAO_ROOT)/tao/DomainC.i \ + $(TAO_ROOT)/tao/POAS.i \ + $(TAO_ROOT)/tao/Active_Object_Map.h \ + $(TAO_ROOT)/tao/Active_Object_Map.i \ + $(TAO_ROOT)/tao/Object_Adapter.i \ + $(TAO_ROOT)/tao/POAManager.h \ + $(TAO_ROOT)/tao/POAManager.i \ + $(TAO_ROOT)/tao/ImplRepoC.h \ + $(TAO_ROOT)/tao/Operation_Table.h \ + $(TAO_ROOT)/tao/Stub.h \ + $(TAO_ROOT)/tao/Pluggable.h \ + $(ACE_ROOT)/ace/Message_Queue.h \ + $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ + $(ACE_ROOT)/ace/Message_Queue_T.h \ + $(ACE_ROOT)/ace/Message_Queue_T.i \ + $(ACE_ROOT)/ace/Message_Queue_T.cpp \ + $(ACE_ROOT)/ace/Strategies.h \ + $(ACE_ROOT)/ace/Strategies_T.h \ + $(ACE_ROOT)/ace/Synch_Options.h \ + $(ACE_ROOT)/ace/Synch_Options.i \ + $(ACE_ROOT)/ace/Thread_Manager.h \ + $(ACE_ROOT)/ace/Thread_Manager.i \ + $(ACE_ROOT)/ace/Strategies_T.i \ + $(ACE_ROOT)/ace/Strategies_T.cpp \ + $(ACE_ROOT)/ace/Service_Repository.h \ + $(ACE_ROOT)/ace/Service_Types.h \ + $(ACE_ROOT)/ace/Service_Types.i \ + $(ACE_ROOT)/ace/Service_Repository.i \ + $(ACE_ROOT)/ace/WFMO_Reactor.h \ + $(ACE_ROOT)/ace/WFMO_Reactor.i \ + $(ACE_ROOT)/ace/Strategies.i \ + $(ACE_ROOT)/ace/Message_Queue.i \ + $(TAO_ROOT)/tao/Pluggable.i \ + $(TAO_ROOT)/tao/MProfile.h \ + $(TAO_ROOT)/tao/Profile.h \ + $(TAO_ROOT)/tao/Tagged_Components.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.h \ + $(TAO_ROOT)/tao/CONV_FRAMEC.i \ + $(TAO_ROOT)/tao/Tagged_Components.i \ + $(TAO_ROOT)/tao/Profile.i \ + $(TAO_ROOT)/tao/MProfile.i \ + $(TAO_ROOT)/tao/Stub.i \ + $(TAO_ROOT)/tao/ORB_Core.h \ + $(TAO_ROOT)/tao/Policy_Manager.h \ + $(TAO_ROOT)/tao/Policy_Manager.i \ + $(TAO_ROOT)/tao/Resource_Factory.h \ + $(TAO_ROOT)/tao/Protocol_Factory.h \ + $(TAO_ROOT)/tao/params.h \ + $(TAO_ROOT)/tao/params.i \ + $(TAO_ROOT)/tao/ORB_Core.i \ + $(ACE_ROOT)/ace/Dynamic_Service.h \ + $(ACE_ROOT)/ace/Dynamic_Service.cpp \ + $(TAO_ROOT)/tao/Invocation.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.h \ + $(TAO_ROOT)/tao/Reply_Dispatcher.i \ + $(TAO_ROOT)/tao/TAOC.h \ + $(TAO_ROOT)/tao/TAOC.i \ + $(TAO_ROOT)/tao/Invocation.i \ + $(TAO_ROOT)/tao/ImplRepoC.i \ + $(TAO_ROOT)/tao/POA.i \ + $(TAO_ROOT)/tao/debug.h \ + $(TAO_ROOT)/tao/Client_Strategy_Factory.h \ + $(TAO_ROOT)/tao/InconsistentTypeCodeC.h \ + $(TAO_ROOT)/tao/DynAny_i.h \ + $(TAO_ROOT)/tao/Union.h \ + $(TAO_ROOT)/tao/ValueBase.h \ + $(TAO_ROOT)/tao/ValueBase.i \ + $(TAO_ROOT)/tao/ValueFactory.h \ + $(TAO_ROOT)/tao/ValueFactory.i \ + $(TAO_ROOT)/tao/ObjectIDList.h \ + $(TAO_ROOT)/tao/ObjectIDList.i \ + $(TAO_ROOT)/tao/WrongTransactionC.h \ + $(TAO_ROOT)/tao/InterfaceC.h \ + $(TAO_ROOT)/tao/BoundsC.h \ + $(TAO_ROOT)/tao/BoundsC.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/orbsvcs_export.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlC.i \ + Concurrency/Concurrency_Utils.h Concurrency/CC_LockSetFactory.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.h \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.i \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS_T.cpp \ + $(TAO_ROOT)/orbsvcs/orbsvcs/CosConcurrencyControlS.i + .obj/Time_Utilities.o .obj/Time_Utilities.so .shobj/Time_Utilities.o .shobj/Time_Utilities.so: Time_Utilities.cpp \ $(TAO_ROOT)/orbsvcs/orbsvcs/Time_Utilities.h \ $(TAO_ROOT)/orbsvcs/orbsvcs/TimeBaseC.h \ |