diff options
Diffstat (limited to 'TAO/tao/UIOP_Connector.cpp')
-rw-r--r-- | TAO/tao/UIOP_Connector.cpp | 379 |
1 files changed, 123 insertions, 256 deletions
diff --git a/TAO/tao/UIOP_Connector.cpp b/TAO/tao/UIOP_Connector.cpp index 91db2ae0880..65f67474ceb 100644 --- a/TAO/tao/UIOP_Connector.cpp +++ b/TAO/tao/UIOP_Connector.cpp @@ -25,63 +25,23 @@ #include "tao/ORB_Core.h" #include "tao/Environment.h" -ACE_RCSID(tao, UIOP_Connector, "$Id$") - -// **************************************************************** - -TAO_UIOP_MT_Connect_Creation_Strategy:: - TAO_UIOP_MT_Connect_Creation_Strategy (ACE_Thread_Manager* t) - : ACE_Creation_Strategy<TAO_UIOP_Client_Connection_Handler> (t) +CORBA::ULong +TAO_UIOP_Connector::tag (void) { + return this->tag_; } -int -TAO_UIOP_MT_Connect_Creation_Strategy::make_svc_handler (TAO_UIOP_Client_Connection_Handler *&sh) -{ - if (sh == 0) - { - ACE_NEW_RETURN (sh, TAO_MT_UIOP_Client_Connection_Handler, -1); - } - return 0; -} - -// **************************************************************** - TAO_UIOP_Connector::TAO_UIOP_Connector (void) - : TAO_Connector (TAO_IOP_TAG_UNIX_IOP), + : tag_(TAO_IOP_TAG_INTERNET_IOP), base_connector_ () { } int -TAO_UIOP_Connector::open (TAO_ORB_Core *orb_core) -{ - typedef ACE_Cached_Connect_Strategy<TAO_UIOP_Client_Connection_Handler, - ACE_LSOCK_CONNECTOR, - TAO_Cached_Connector_Lock> - TAO_CACHED_CONNECT_STRATEGY; - - TAO_CACHED_CONNECT_STRATEGY* cached_connect_strategy = - new TAO_CACHED_CONNECT_STRATEGY (new TAO_UIOP_MT_Connect_Creation_Strategy); - - return this->base_connector_.open (orb_core->reactor (), - &this->null_creation_strategy_, - cached_connect_strategy, - &this->null_activation_strategy_); -} - -int -TAO_UIOP_Connector::close (void) -{ - this->base_connector_.close (); - return 0; -} - -int TAO_UIOP_Connector::connect (TAO_Profile *profile, TAO_Transport *& transport) { - if (profile->tag () != TAO_IOP_TAG_UNIX_IOP) + if (profile->tag () != TAO_IOP_TAG_INTERNET_IOP) return -1; TAO_UIOP_Profile *uiop_profile = @@ -90,9 +50,38 @@ TAO_UIOP_Connector::connect (TAO_Profile *profile, if (uiop_profile == 0) return -1; +// Establish the connection and get back a <Client_Connection_Handler>. +// @@ We do not have the ORB core +// #if defined (TAO_ARL_USES_SAME_CONNECTOR_PORT) +// if (this->orb_core_->arl_same_port_connect ()) +// { +// ACE_UNIX_Addr local_addr (this->orb_core_->orb_params ()->addr ()); +// local_addr.set_port_number (server_addr_p->get_port_number ()); +// +// // Set the local port number to use. +// if (con->connect (uiop_profile->hint (), +// uiop_profile->object_addr (), +// 0, +// local_addr, +// 1) == -1); +// { +// // Give users a clue to the problem. +// ACE_DEBUG ((LM_ERROR, "(%P|%t) %s:%u, connection to " +// "%s failed (%p)\n", +// __FILE__, +// __LINE__, +// uiop_profile->addr_to_string (), +// "errno")); +// +// TAO_THROW_ENV_RETURN_VOID (CORBA::TRANSIENT (), env); +// } +// } +// else +//#endif /* TAO_ARL_USES_SAME_CONNECTOR_PORT */ + const ACE_UNIX_Addr &oa = uiop_profile->object_addr (); - TAO_UIOP_Client_Connection_Handler* result; + TAO_Client_Connection_Handler* result; // the connect call will set the hint () stored in the Profile // object; but we obtain the transport in the <result> @@ -119,26 +108,85 @@ TAO_UIOP_Connector::connect (TAO_Profile *profile, } int -TAO_UIOP_Connector::preconnect (const char *preconnects) +TAO_UIOP_Connector::open (TAO_Resource_Factory *trf, + ACE_Reactor *reactor) +{ + // @@ Fred: why not just + // + // return this->base_connector_.open (....); ???? + // + if (this->base_connector_.open (reactor, + trf->get_null_creation_strategy (), + trf->get_cached_connect_strategy (), + trf->get_null_activation_strategy ()) != 0) + return -1; + return 0; +} + +int +TAO_UIOP_Connector::close (void) { - // Check for the proper protocol prefix. - if (this->check_prefix (preconnects) != 0) - return 0; // Failure: zero successful preconnections + this->base_connector_.close (); + return 0; +} - const char *protocol_removed = ACE_OS::strstr (preconnects, "://") + 3; - // "+ 3" since strlen of "://" is 3. +int +TAO_UIOP_Connector::preconnect (char *preconnections) +{ +#if 0 + if (preconnections) + { + ACE_UNIX_Addr dest; + TAO_Client_Connection_Handler *handler; + ACE_Unbounded_Stack<TAO_Client_Connection_Handler *> handlers; - char *preconnections = ACE_OS::strdup (protocol_removed); + char *nextptr = 0; + char *where = 0; - int successes = 0; + for (where = ACE::strsplit_r (preconnections, ",", nextptr); + where != 0; + where = ACE::strsplit_r (0, ",", nextptr)) + { + char *trendezvous_point = where; + char *sep = ACE_OS::strchr (where, ':'); + if (sep) + { + *sep = '\0'; + + dest.set (trendezvous_point); + + // Try to establish the connection + handler = 0; + if (this->base_connector_.connect (handler, dest) == 0) + // Save it for later so we can mark it as idle + handlers.push (handler); + else + ACE_ERROR ((LM_ERROR, + "(%P|%t) Unable to preconnect to rendezvous point" + " '%s'.\n", + dest.get_path_name ())); + } + else + ACE_ERROR ((LM_ERROR, + "(%P|%t) Couldn't find a ':' separator in '%s'" + " spec.\n", + where)); + } + + // Walk the stack of handlers and mark each one as idle now. + handler = 0; + while (handlers.pop (handler) == 0) + handler->idle (); + + } +#else + int successes = 0; if (preconnections) { ACE_UNIX_Addr dest; ACE_Unbounded_Stack<ACE_UNIX_Addr> dests; - size_t num_connections; - char *nextptr = 0; char *where = 0; for (where = ACE::strsplit_r (preconnections, ",", nextptr); @@ -146,36 +194,34 @@ TAO_UIOP_Connector::preconnect (const char *preconnects) where = ACE::strsplit_r (0, ",", nextptr)) { char *rendezvous_point = where; + char *sep = ACE_OS::strchr (where, ':'); - int version_offset = 0; - // Additional offset to remove version from preconnect, if it exists. - - if (isdigit (rendezvous_point[0]) && - rendezvous_point[1] == '.' && - isdigit (rendezvous_point[2]) && - rendezvous_point[3] == '@') - version_offset = 4; - - // @@ For now, we just drop the version prefix. However, at - // some point in the future the version may become useful. - - dest.set (rendezvous_point + version_offset); + if (sep) + { + *sep = '\0'; - dests.push (dest); + dest.set (rendezvous_point); + dests.push (dest); + } + else + ACE_ERROR ((LM_ERROR, + "(%P|%t) Couldn't find a ':' separator in '%s'" + " spec.\n", + where)); } // Create an array of addresses from the stack, as well as an // array of eventual handlers. - num_connections = dests.size (); + size_t num_connections = dests.size (); ACE_UNIX_Addr *remote_addrs = 0; - TAO_UIOP_Client_Connection_Handler **handlers = 0; + TAO_Client_Connection_Handler **handlers = 0; char *failures = 0; ACE_NEW_RETURN (remote_addrs, ACE_UNIX_Addr[num_connections], -1); ACE_NEW_RETURN (handlers, - TAO_UIOP_Client_Connection_Handler *[num_connections], + TAO_Client_Connection_Handler *[num_connections], -1); ACE_NEW_RETURN (failures, char[num_connections], @@ -202,204 +248,25 @@ TAO_UIOP_Connector::preconnect (const char *preconnects) { handlers[index]->idle (); ++successes; - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - "TAO (%P|%t) Preconnection <%s> succeeded.\n", - remote_addrs[index].get_path_name ())); - } - } - else - { - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - "TAO (%P|%t) Preconnection <%s> failed.\n", - remote_addrs[index].get_path_name ())); - } } } - - ACE_OS::free (preconnections); - - if (TAO_debug_level > 0) - { - ACE_DEBUG ((LM_DEBUG, - "TAO (%P|%t) UIOP preconnections: %d successes and " - "%d failures.\n", - successes, - num_connections - successes)); - } } - +#endif /* 0 */ return successes; } -TAO_Profile* -TAO_UIOP_Connector::create_profile (TAO_InputCDR& cdr) -{ - TAO_Profile* pfile; - ACE_NEW_RETURN (pfile, TAO_UIOP_Profile, 0); - - int r = pfile->decode (cdr); - if (r == -1) - { - pfile->_decr_refcnt (); - pfile = 0; - } - - return pfile; -} - -int -TAO_UIOP_Connector::make_profile (const char *endpoint, - TAO_Profile *&profile, - CORBA::Environment &ACE_TRY_ENV) -{ - // The endpoint should be of the form: - // - // N.n//rendezvous_point|object_key - // - // or: - // - // //rendezvous_point|object_key - - ACE_NEW_RETURN (profile, - TAO_UIOP_Profile (endpoint, ACE_TRY_ENV), - -1); - - return 0; // Success -} - - -int -TAO_UIOP_Connector::check_prefix (const char *endpoint) -{ - // Parse the given URL style IOR and create an mprofile from it. - - // Check for a valid string - if (!endpoint || !*endpoint) - return -1; // Failure - - const char protocol[] = "uiop"; - // This is valid for any protocol beginning with `uiop'. - - // Check for the proper prefix in the IOR. If the proper prefix isn't - // in the IOR then it is not an IOR we can use. - if (ACE_OS::strncasecmp (endpoint, - protocol, - ACE_OS::strlen (protocol)) == 0) - { - return 0; // Success - } - - return -1; - // Failure: not an UIOP IOR - // DO NOT throw an exception here. -} - -char -TAO_UIOP_Connector::object_key_delimiter (void) const -{ - return TAO_UIOP_Profile::object_key_delimiter; -} - -#define TAO_UIOP_SVC_TUPLE ACE_Svc_Tuple<TAO_UIOP_Client_Connection_Handler> -#define UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR ACE_Refcounted_Hash_Recyclable<ACE_UNIX_Addr> - -# if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Node<ACE_UNIX_Addr>; template class ACE_Unbounded_Stack<ACE_UNIX_Addr>; template class ACE_Unbounded_Stack_Iterator<ACE_UNIX_Addr>; -template class ACE_Connector<TAO_UIOP_Client_Connection_Handler, ACE_LSOCK_CONNECTOR>; -template class ACE_Connect_Strategy<TAO_UIOP_Client_Connection_Handler, ACE_LSOCK_CONNECTOR>; -template class ACE_Cached_Connect_Strategy<TAO_UIOP_Client_Connection_Handler, ACE_LSOCK_CONNECTOR, TAO_Cached_Connector_Lock>; -template class ACE_Strategy_Connector<TAO_UIOP_Client_Connection_Handler, - ACE_LSOCK_CONNECTOR>; - -template class ACE_Concurrency_Strategy<TAO_UIOP_Client_Connection_Handler>; -template class ACE_Creation_Strategy<TAO_UIOP_Client_Connection_Handler>; - -template class ACE_NOOP_Creation_Strategy<TAO_UIOP_Client_Connection_Handler>; -template class ACE_NOOP_Concurrency_Strategy<TAO_UIOP_Client_Connection_Handler>; -template class ACE_Recycling_Strategy<TAO_UIOP_Client_Connection_Handler>; - -template class ACE_Svc_Handler<ACE_LSOCK_STREAM, ACE_NULL_SYNCH>; -template class UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR; -template class TAO_UIOP_SVC_TUPLE; -template class ACE_Map_Manager<int, TAO_UIOP_SVC_TUPLE*, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator_Base<int, TAO_UIOP_SVC_TUPLE*, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator<int, TAO_UIOP_SVC_TUPLE*, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Reverse_Iterator<int, TAO_UIOP_SVC_TUPLE*, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Entry<int, TAO_UIOP_SVC_TUPLE*>; - -template class ACE_Hash_Map_Entry<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *>; -template class ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>; -template class ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>; -template class ACE_Hash_Map_Manager<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_MUTEX>; -template class ACE_Hash_Map_Manager_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Base_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_MUTEX>; -template class ACE_Hash_Map_Iterator_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_MUTEX>; -template class ACE_Hash_Map_Manager<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_NULL_MUTEX>; -template class ACE_Hash_Map_Manager_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_NULL_MUTEX>; -template class ACE_Hash_Map_Iterator_Base_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_NULL_MUTEX>; -template class ACE_Hash_Map_Iterator<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_NULL_MUTEX>; -template class ACE_Hash_Map_Iterator_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_NULL_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_NULL_MUTEX>; -template class ACE_Hash_Map_Reverse_Iterator_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_NULL_MUTEX>; - -# elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Node<ACE_UNIX_Addr> #pragma instantiate ACE_Unbounded_Stack<ACE_UNIX_Addr> #pragma instantiate ACE_Unbounded_Stack_Iterator<ACE_UNIX_Addr> -#pragma instantiate ACE_Connector<TAO_UIOP_Client_Connection_Handler, ACE_LSOCK_CONNECTOR> -#pragma instantiate ACE_Connect_Strategy<TAO_UIOP_Client_Connection_Handler, ACE_LSOCK_CONNECTOR> -#pragma instantiate ACE_Cached_Connect_Strategy<TAO_UIOP_Client_Connection_Handler, ACE_LSOCK_CONNECTOR, TAO_Cached_Connector_Lock> -#pragma instantiate ACE_Strategy_Connector<TAO_UIOP_Client_Connection_Handler, ACE_LSOCK_CONNECTOR> - -#pragma instantiate ACE_Concurrency_Strategy<TAO_UIOP_Client_Connection_Handler> -#pragma instantiate ACE_Creation_Strategy<TAO_UIOP_Client_Connection_Handler> - -#pragma instantiate ACE_NOOP_Creation_Strategy<TAO_UIOP_Client_Connection_Handler> -#pragma instantiate ACE_NOOP_Concurrency_Strategy<TAO_UIOP_Client_Connection_Handler> - -#pragma instantiate ACE_Recycling_Strategy<TAO_UIOP_Client_Connection_Handler> - -#pragma instantiate ACE_Svc_Handler<ACE_LSOCK_STREAM, ACE_NULL_SYNCH> -#pragma instantiate UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR -#pragma instantiate TAO_UIOP_SVC_TUPLE -#pragma instantiate ACE_Map_Manager<int, TAO_UIOP_SVC_TUPLE*, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator_Base<int, TAO_UIOP_SVC_TUPLE*, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator<int, TAO_UIOP_SVC_TUPLE*, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<int, TAO_UIOP_SVC_TUPLE*, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Entry<int, TAO_UIOP_SVC_TUPLE*> - -#pragma instantiate ACE_Hash_Map_Entry<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *> -#pragma instantiate ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR> -#pragma instantiate ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR> -#pragma instantiate ACE_Hash_Map_Manager<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Manager_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Hash_Map_Manager<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_NULL_MUTEX> -#pragma instantiate ACE_Hash_Map_Manager_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_NULL_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_NULL_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_NULL_MUTEX> -#pragma instantiate ACE_Hash_Map_Iterator_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_NULL_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_SYNCH_NULL_MUTEX> -#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR, TAO_UIOP_Client_Connection_Handler *, ACE_Hash<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_Equal_To<UIOP_REFCOUNTED_HASH_RECYCLABLE_ADDR>, ACE_SYNCH_NULL_MUTEX> - -# endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ #endif /* !ACE_LACKS_UNIX_DOMAIN_SOCKETS */ |