summaryrefslogtreecommitdiff
path: root/TAO/tao/UIOP_Connector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/UIOP_Connector.cpp')
-rw-r--r--TAO/tao/UIOP_Connector.cpp379
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 */