diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/Event_Manager.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Event_Manager.cpp | 291 |
1 files changed, 206 insertions, 85 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/Event_Manager.cpp b/TAO/orbsvcs/orbsvcs/Notify/Event_Manager.cpp index bcf4743dfa8..2392dee4a63 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Event_Manager.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Event_Manager.cpp @@ -9,25 +9,13 @@ ACE_RCSID(RT_Notify, TAO_NS_Event_Manager, "$Id$") -#include "orbsvcs/ESF/ESF_Proxy_Collection.h" - -#include "EventTypeSeq.h" -#include "Event.h" -#include "Peer.h" -#include "Consumer.h" #include "ProxyConsumer.h" #include "ProxySupplier.h" - -#include "Event_Map_T.h" -#include "Dispatch_Observer_T.h" -#include "Pending_Worker_T.h" -#include "Event_Map_Observer_T.h" +#include "Consumer_Map.h" +#include "Supplier_Map.h" TAO_NS_Event_Manager::TAO_NS_Event_Manager (void) - :consumer_map_ (0), supplier_map_ (0), - consumer_map_observer_ (0), supplier_map_observer_ (0), - event_dispatch_observer_(0), updates_dispatch_observer_ (0), - event_pending_worker_ (0), updates_pending_worker_ (0) + :consumer_map_ (0), supplier_map_ (0) { } @@ -36,17 +24,11 @@ TAO_NS_Event_Manager::~TAO_NS_Event_Manager () if (TAO_debug_level > 0) { ACE_DEBUG ((LM_DEBUG, "destroying consumer/supplier map count = %d/%d, \n", - this->consumer_map_->event_type_count (), this->supplier_map_->event_type_count ())); + this->consumer_map_->proxy_count (), this->supplier_map_->proxy_count ())); } delete this->consumer_map_; delete this->supplier_map_; - delete this->consumer_map_observer_; - delete this->supplier_map_observer_; - delete this->event_dispatch_observer_; - delete this->updates_dispatch_observer_; - delete this->event_pending_worker_; - delete this->updates_pending_worker_; } void @@ -62,77 +44,87 @@ TAO_NS_Event_Manager::init (ACE_ENV_SINGLE_ARG_DECL) CORBA::NO_MEMORY ()); ACE_CHECK; - ACE_NEW_THROW_EX (this->consumer_map_observer_, - TAO_NS_Consumer_Map_Observer (), - CORBA::NO_MEMORY ()); + this->consumer_map_->init (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; - - ACE_NEW_THROW_EX (this->supplier_map_observer_, - TAO_NS_Supplier_Map_Observer (), - CORBA::NO_MEMORY ()); + this->supplier_map_->init (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK; +} - ACE_NEW_THROW_EX (this->event_dispatch_observer_, - TAO_NS_Event_Dispatch_Observer (), - CORBA::NO_MEMORY ()); - ACE_CHECK; +void +TAO_NS_Event_Manager::shutdown (void) +{ +} - ACE_NEW_THROW_EX (this->updates_dispatch_observer_, - TAO_NS_Updates_Dispatch_Observer (), - CORBA::NO_MEMORY ()); - ACE_CHECK; +void +TAO_NS_Event_Manager::connect (TAO_NS_ProxySupplier* proxy_supplier ACE_ENV_ARG_DECL) +{ + this->consumer_map_->connect (proxy_supplier ACE_ENV_ARG_PARAMETER); - ACE_NEW_THROW_EX (this->event_pending_worker_, - TAO_NS_Event_Pending_Worker (), - CORBA::NO_MEMORY ()); - ACE_CHECK; + // Inform about offered types. + TAO_NS_EventTypeSeq removed; + proxy_supplier->types_changed (this->offered_types (), removed ACE_ENV_ARG_PARAMETER); +} - ACE_NEW_THROW_EX (this->updates_pending_worker_, - TAO_NS_Updates_Pending_Worker (), - CORBA::NO_MEMORY ()); - ACE_CHECK; +void +TAO_NS_Event_Manager::disconnect (TAO_NS_ProxySupplier* proxy_supplier ACE_ENV_ARG_DECL) +{ + this->consumer_map_->disconnect (proxy_supplier ACE_ENV_ARG_PARAMETER); +} - this->consumer_map_->init (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; +void +TAO_NS_Event_Manager::connect (TAO_NS_ProxyConsumer* proxy_consumer ACE_ENV_ARG_DECL) +{ + this->supplier_map_->connect (proxy_consumer ACE_ENV_ARG_PARAMETER); - this->supplier_map_->init (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; + // Inform about subscription types. + TAO_NS_EventTypeSeq removed; + proxy_consumer->types_changed (this->subscription_types (), removed ACE_ENV_ARG_PARAMETER); +} - this->event_dispatch_observer_->init (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; +void +TAO_NS_Event_Manager::disconnect (TAO_NS_ProxyConsumer* proxy_consumer ACE_ENV_ARG_DECL) +{ + this->supplier_map_->disconnect (proxy_consumer ACE_ENV_ARG_PARAMETER); +} - this->updates_dispatch_observer_->init (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; +void +TAO_NS_Event_Manager::offer_change (TAO_NS_ProxyConsumer* proxy_consumer, const TAO_NS_EventTypeSeq& added, const TAO_NS_EventTypeSeq& removed ACE_ENV_ARG_DECL) +{ + TAO_NS_EventTypeSeq new_added, last_removed; - this->consumer_map_observer_->init (this->supplier_map_, this->updates_dispatch_observer_ ACE_ENV_SINGLE_ARG_PARAMETER); + this->publish (proxy_consumer, added, new_added ACE_ENV_ARG_PARAMETER); ACE_CHECK; - this->supplier_map_observer_->init (this->consumer_map_, this->updates_dispatch_observer_ ACE_ENV_ARG_PARAMETER); + this->un_publish (proxy_consumer, removed, last_removed ACE_ENV_ARG_PARAMETER); ACE_CHECK; - this->consumer_map_->attach_observer (this->consumer_map_observer_); - this->supplier_map_->attach_observer (this->supplier_map_observer_); - - this->event_pending_worker_->init (this->event_dispatch_observer_, TAO_NS_PROPERTIES::instance()->update_period () ACE_ENV_ARG_PARAMETER); - ACE_CHECK; + TAO_NS_Consumer_Map::ENTRY::COLLECTION* updates_collection = this->consumer_map_->updates_collection (); - if (TAO_NS_PROPERTIES::instance()->updates () == 0) - this->updates_pending_worker_->worker_suspend (); + TAO_NS_ProxySupplier_Update_Worker worker (new_added, last_removed); - this->updates_pending_worker_->init (this->updates_dispatch_observer_, TAO_NS_PROPERTIES::instance()->update_period () ACE_ENV_ARG_PARAMETER); - ACE_CHECK; + if (updates_collection != 0) + updates_collection->for_each (&worker ACE_ENV_ARG_PARAMETER); } void -TAO_NS_Event_Manager::shutdown (void) +TAO_NS_Event_Manager::subscription_change (TAO_NS_ProxySupplier* proxy_supplier, const TAO_NS_EventTypeSeq& added, const TAO_NS_EventTypeSeq& removed ACE_ENV_ARG_DECL) { - this->event_pending_worker_->shutdown (); - this->updates_pending_worker_->shutdown (); + TAO_NS_EventTypeSeq new_added, last_removed; + + this->subscribe (proxy_supplier, added, new_added ACE_ENV_ARG_PARAMETER); + this->un_subscribe (proxy_supplier, removed, last_removed ACE_ENV_ARG_PARAMETER); + + TAO_NS_Supplier_Map::ENTRY::COLLECTION* updates_collection = this->supplier_map_->updates_collection (); + + TAO_NS_ProxyConsumer_Update_Worker worker (new_added, last_removed); + + if (updates_collection != 0) + updates_collection->for_each (&worker ACE_ENV_ARG_PARAMETER); } void -TAO_NS_Event_Manager::subscribe (TAO_NS_ProxySupplier* proxy_supplier, const TAO_NS_EventTypeSeq& seq ACE_ENV_ARG_DECL) +TAO_NS_Event_Manager::subscribe (TAO_NS_ProxySupplier* proxy_supplier, const TAO_NS_EventTypeSeq& seq, TAO_NS_EventTypeSeq& new_seq ACE_ENV_ARG_DECL) { TAO_NS_EventTypeSeq::CONST_ITERATOR iter (seq); @@ -140,13 +132,16 @@ TAO_NS_Event_Manager::subscribe (TAO_NS_ProxySupplier* proxy_supplier, const TAO for (iter.first (); iter.next (event_type) != 0; iter.advance ()) { - consumer_map_->insert (proxy_supplier, *event_type ACE_ENV_ARG_PARAMETER); + int result = consumer_map_->insert (proxy_supplier, *event_type ACE_ENV_ARG_PARAMETER); ACE_CHECK; + + if (result == 1) + new_seq.insert (*event_type); } } void -TAO_NS_Event_Manager::un_subscribe (TAO_NS_ProxySupplier* proxy_supplier, const TAO_NS_EventTypeSeq& seq ACE_ENV_ARG_DECL) +TAO_NS_Event_Manager::un_subscribe (TAO_NS_ProxySupplier* proxy_supplier, const TAO_NS_EventTypeSeq& seq, TAO_NS_EventTypeSeq& last_seq ACE_ENV_ARG_DECL) { TAO_NS_EventTypeSeq::CONST_ITERATOR iter (seq); @@ -154,13 +149,16 @@ TAO_NS_Event_Manager::un_subscribe (TAO_NS_ProxySupplier* proxy_supplier, const for (iter.first (); iter.next (event_type) != 0; iter.advance ()) { - consumer_map_->remove (proxy_supplier, *event_type ACE_ENV_ARG_PARAMETER); + int result = consumer_map_->remove (proxy_supplier, *event_type ACE_ENV_ARG_PARAMETER); ACE_CHECK; + + if (result == 1) + last_seq.insert (*event_type); } } void -TAO_NS_Event_Manager::publish (TAO_NS_ProxyConsumer* proxy_consumer, const TAO_NS_EventTypeSeq& seq ACE_ENV_ARG_DECL) +TAO_NS_Event_Manager::publish (TAO_NS_ProxyConsumer* proxy_consumer, const TAO_NS_EventTypeSeq& seq, TAO_NS_EventTypeSeq& new_seq ACE_ENV_ARG_DECL) { TAO_NS_EventTypeSeq::CONST_ITERATOR iter (seq); @@ -168,14 +166,16 @@ TAO_NS_Event_Manager::publish (TAO_NS_ProxyConsumer* proxy_consumer, const TAO_N for (iter.first (); iter.next (event_type) != 0; iter.advance ()) { - supplier_map_->insert (proxy_consumer, *event_type ACE_ENV_ARG_PARAMETER); + int result = supplier_map_->insert (proxy_consumer, *event_type ACE_ENV_ARG_PARAMETER); ACE_CHECK; - } + if (result == 1) + new_seq.insert (*event_type); + } } void -TAO_NS_Event_Manager::un_publish (TAO_NS_ProxyConsumer* proxy_consumer, const TAO_NS_EventTypeSeq& seq ACE_ENV_ARG_DECL) +TAO_NS_Event_Manager::un_publish (TAO_NS_ProxyConsumer* proxy_consumer, const TAO_NS_EventTypeSeq& seq, TAO_NS_EventTypeSeq& last_seq ACE_ENV_ARG_DECL) { TAO_NS_EventTypeSeq::CONST_ITERATOR iter (seq); @@ -183,25 +183,146 @@ TAO_NS_Event_Manager::un_publish (TAO_NS_ProxyConsumer* proxy_consumer, const TA for (iter.first (); iter.next (event_type) != 0; iter.advance ()) { - supplier_map_->remove (proxy_consumer, *event_type ACE_ENV_ARG_PARAMETER); + int result = supplier_map_->remove (proxy_consumer, *event_type ACE_ENV_ARG_PARAMETER); ACE_CHECK; + + if (result == 1) + last_seq.insert (*event_type); } } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_NS_Event_Map_T<TAO_NS_Consumer, TAO_SYNCH_RW_MUTEX>; -template class TAO_NS_Event_Map_T<TAO_NS_Supplier, TAO_SYNCH_RW_MUTEX>; +template class TAO_NS_Event_Map_T<TAO_NS_ProxySupplier, TAO_SYNCH_RW_MUTEX>; +template class TAO_NS_Event_Map_T<TAO_NS_ProxyConsumer, TAO_SYNCH_RW_MUTEX>; -template class TAO_NS_Event_Map_Entry_T<TAO_NS_Consumer>; -template class TAO_NS_Event_Map_Entry_T<TAO_NS_Supplier>; +template class ACE_Hash<TAO_NS_EventType>; +template class ACE_Equal_To<TAO_NS_EventType>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +template class TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer>; +template class TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier>; + +template class ACE_Hash_Map_Manager_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex>; +template class ACE_Hash_Map_Manager_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex>; +template class ACE_Hash_Map_Manager<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Null_Mutex>; +template class ACE_Hash_Map_Manager<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Null_Mutex>; +template class ACE_Hash_Map_Manager<ACE_CString, CORBA::Any, ACE_Null_Mutex>; + +template class ACE_Unbounded_Set<TAO_NS_EventType>; +template class ACE_Unbounded_Set_Const_Iterator<TAO_NS_EventType>; +template class ACE_Unbounded_Queue<ACE_Refcounted_Auto_Ptr<TAO_NS_Event, TAO_SYNCH_MUTEX> >; +template class ACE_Unbounded_Set_Iterator<TAO_NS_EventType>; + +template class TAO_ESF_Worker<TAO_NS_ProxySupplier>; +template class TAO_ESF_Worker<TAO_NS_ProxyConsumer>; +template class TAO_ESF_Worker<TAO_NS_Proxy>; +template class TAO_ESF_Worker<TAO_NS_Consumer>; +template class TAO_ESF_Worker<TAO_NS_Peer>; +template class TAO_ESF_Worker<TAO_NS_Admin>; +template class TAO_ESF_Worker<TAO_NS_EventChannel>; + +template class ACE_Refcounted_Auto_Ptr<TAO_NS_Event, TAO_SYNCH_MUTEX>; +template class ACE_Unbounded_Queue_Iterator<ACE_Refcounted_Auto_Ptr<TAO_NS_Event, TAO_SYNCH_MUTEX> >; + +template class ACE_Node<ACE_Refcounted_Auto_Ptr<TAO_NS_Event, TAO_SYNCH_MUTEX > >; +template class ACE_Node<TAO_NS_Supplier *>; +template class ACE_Node<TAO_NS_Admin *>; +template class ACE_Node<TAO_NS_EventChannel *>; +template class ACE_Node<TAO_NS_ProxyConsumer *>; +template class ACE_Node<TAO_NS_EventType>; +template class ACE_Node<TAO_NS_Peer *>; +template class ACE_Node<TAO_NS_ProxySupplier *>; +template class ACE_Node<TAO_NS_Proxy *>; +template class ACE_Node<TAO_NS_Consumer *>; -#pragma instantiate TAO_NS_Event_Map_T<TAO_NS_Consumer, TAO_SYNCH_RW_MUTEX> -#pragma instantiate TAO_NS_Event_Map_T<TAO_NS_Supplier, TAO_SYNCH_RW_MUTEX> +template class ACE_Hash_Map_Entry<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *>; +template class ACE_Hash_Map_Entry<ACE_CString, CORBA::Any>; +template class ACE_Hash_Map_Entry<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *>; + +template class ACE_Hash_Map_Iterator_Base_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex>; +template class ACE_Hash_Map_Iterator_Base_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex>; + +template class ACE_Hash_Map_Iterator_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex>; +template class ACE_Hash_Map_Iterator_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex>; + +template class ACE_Hash_Map_Reverse_Iterator_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex>; +template class ACE_Hash_Map_Reverse_Iterator_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex>; + +template class ACE_Hash_Map_Manager_Ex<ACE_CString, CORBA::Any, ACE_Hash<ACE_CString >, ACE_Equal_To<ACE_CString >, ACE_Null_Mutex>; + +template class ACE_Hash_Map_Iterator_Ex<ACE_CString, CORBA::Any, ACE_Hash<ACE_CString >, ACE_Equal_To<ACE_CString >, ACE_Null_Mutex>; +template class ACE_Hash_Map_Iterator_Base_Ex<ACE_CString, CORBA::Any, ACE_Hash<ACE_CString >, ACE_Equal_To<ACE_CString >, ACE_Null_Mutex>; +template class ACE_Hash_Map_Reverse_Iterator_Ex<ACE_CString, CORBA::Any, ACE_Hash<ACE_CString >, ACE_Equal_To<ACE_CString >, ACE_Null_Mutex>; + +template class TAO_ESF_Shutdown_Proxy<TAO_NS_EventChannel>; +template class TAO_ESF_Shutdown_Proxy<TAO_NS_Admin>; +template class TAO_ESF_Shutdown_Proxy<TAO_NS_Proxy>; + +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_NS_Event_Map_Entry_T<TAO_NS_Consumer> -#pragma instantiate TAO_NS_Event_Map_Entry_T<TAO_NS_Supplier> +#pragma instantiate TAO_NS_Event_Map_T<TAO_NS_ProxySupplier, TAO_SYNCH_RW_MUTEX> +#pragma instantiate TAO_NS_Event_Map_T<TAO_NS_ProxyConsumer, TAO_SYNCH_RW_MUTEX> + +#pragma instantiate ACE_Hash<TAO_NS_EventType> +#pragma instantiate ACE_Equal_To<TAO_NS_EventType> + +#pragma instantiate TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> +#pragma instantiate TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> + +#pragma instantiate ACE_Hash_Map_Manager_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Manager_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Manager<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Manager<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Manager<ACE_CString, CORBA::Any, ACE_Null_Mutex> + +#pragma instantiate ACE_Unbounded_Set<TAO_NS_EventType> +#pragma instantiate ACE_Unbounded_Set_Const_Iterator<TAO_NS_EventType> +#pragma instantiate ACE_Unbounded_Queue<ACE_Refcounted_Auto_Ptr<TAO_NS_Event, TAO_SYNCH_MUTEX> > +#pragma instantiate ACE_Unbounded_Set_Iterator<TAO_NS_EventType> + +#pragma instantiate TAO_ESF_Worker<TAO_NS_ProxySupplier> +#pragma instantiate TAO_ESF_Worker<TAO_NS_ProxyConsumer> +#pragma instantiate TAO_ESF_Worker<TAO_NS_Proxy> +#pragma instantiate TAO_ESF_Worker<TAO_NS_Consumer> +#pragma instantiate TAO_ESF_Worker<TAO_NS_Peer> +#pragma instantiate TAO_ESF_Worker<TAO_NS_Admin> +#pragma instantiate TAO_ESF_Worker<TAO_NS_EventChannel> + +#pragma instantiate ACE_Refcounted_Auto_Ptr<TAO_NS_Event, TAO_SYNCH_MUTEX> +#pragma instantiate ACE_Unbounded_Queue_Iterator<ACE_Refcounted_Auto_Ptr<TAO_NS_Event, TAO_SYNCH_MUTEX> > + +#pragma instantiate ACE_Node<ACE_Refcounted_Auto_Ptr<TAO_NS_Event, TAO_SYNCH_MUTEX > > +#pragma instantiate ACE_Node<TAO_NS_Supplier *> +#pragma instantiate ACE_Node<TAO_NS_Admin *> +#pragma instantiate ACE_Node<TAO_NS_EventChannel *> +#pragma instantiate ACE_Node<TAO_NS_ProxyConsumer *> +#pragma instantiate ACE_Node<TAO_NS_EventType> +#pragma instantiate ACE_Node<TAO_NS_Peer *> +#pragma instantiate ACE_Node<TAO_NS_ProxySupplier *> +#pragma instantiate ACE_Node<TAO_NS_Proxy *> +#pragma instantiate ACE_Node<TAO_NS_Consumer *> + +#pragma instantiate ACE_Hash_Map_Entry<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *> +#pragma instantiate ACE_Hash_Map_Entry<ACE_CString, CORBA::Any> +#pragma instantiate ACE_Hash_Map_Entry<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *> + +#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex> + +#pragma instantiate ACE_Hash_Map_Iterator_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Iterator_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex> + +#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxySupplier> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<TAO_NS_EventType, TAO_NS_Event_Map_Entry_T<TAO_NS_ProxyConsumer> *, ACE_Hash<TAO_NS_EventType>, ACE_Equal_To<TAO_NS_EventType>, ACE_Null_Mutex> + +#pragma instantiate ACE_Hash_Map_Manager_Ex<ACE_CString, CORBA::Any, ACE_Hash<ACE_CString >, ACE_Equal_To<ACE_CString >, ACE_Null_Mutex> + +#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<ACE_CString, CORBA::Any, ACE_Hash<ACE_CString >, ACE_Equal_To<ACE_CString >, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Iterator_Ex<ACE_CString, CORBA::Any, ACE_Hash<ACE_CString >, ACE_Equal_To<ACE_CString >, ACE_Null_Mutex> +#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<ACE_CString, CORBA::Any, ACE_Hash<ACE_CString >, ACE_Equal_To<ACE_CString >, ACE_Null_Mutex> + +#pragma instantiate TAO_ESF_Shutdown_Proxy<TAO_NS_EventChannel> +#pragma instantiate TAO_ESF_Shutdown_Proxy<TAO_NS_Admin> +#pragma instantiate TAO_ESF_Shutdown_Proxy<TAO_NS_Proxy> #endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |