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.cpp150
1 files changed, 39 insertions, 111 deletions
diff --git a/TAO/tao/UIOP_Connector.cpp b/TAO/tao/UIOP_Connector.cpp
index 32f191d92db..6a207d90310 100644
--- a/TAO/tao/UIOP_Connector.cpp
+++ b/TAO/tao/UIOP_Connector.cpp
@@ -5,12 +5,12 @@
#if defined (TAO_HAS_UIOP)
+#include "ace/Auto_Ptr.h"
#include "tao/UIOP_Profile.h"
#include "tao/GIOP.h"
#include "tao/debug.h"
#include "tao/ORB_Core.h"
#include "tao/Environment.h"
-#include "ace/Auto_Ptr.h"
ACE_RCSID(tao, UIOP_Connector, "$Id$")
@@ -41,22 +41,13 @@ TAO_UIOP_Connect_Creation_Strategy::make_svc_handler (
}
// ****************************************************************
-#if !defined (TAO_USES_ROBUST_CONNECTION_MGMT)
-typedef ACE_Cached_Connect_Strategy<TAO_UIOP_Client_Connection_Handler,
- ACE_LSOCK_CONNECTOR,
- TAO_Cached_Connector_Lock>
- TAO_CACHED_CONNECT_STRATEGY;
-#endif /* ! TAO_USES_ROBUST_CONNECTION_MGMT */
TAO_UIOP_Connector::TAO_UIOP_Connector (void)
: TAO_Connector (TAO_IOP_TAG_UNIX_IOP),
base_connector_ (),
- orb_core_ (0)
-#if defined (TAO_USES_ROBUST_CONNECTION_MGMT)
- ,
+ orb_core_ (0),
cached_connect_strategy_ (0),
caching_strategy_ (0)
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
{
}
@@ -65,10 +56,8 @@ TAO_UIOP_Connector::open (TAO_ORB_Core *orb_core)
{
this->orb_core_ = orb_core;
-#if defined (TAO_USES_ROBUST_CONNECTION_MGMT)
if (this->make_caching_strategy () == -1)
return -1;
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
TAO_UIOP_Connect_Creation_Strategy *connect_creation_strategy = 0;
ACE_NEW_RETURN (connect_creation_strategy,
@@ -77,8 +66,7 @@ TAO_UIOP_Connector::open (TAO_ORB_Core *orb_core)
this->orb_core_),
-1);
- auto_ptr<TAO_UIOP_Connect_Creation_Strategy>
- new_connect_creation_strategy (connect_creation_strategy);
+ auto_ptr<TAO_UIOP_Connect_Creation_Strategy> new_connect_creation_strategy (connect_creation_strategy);
TAO_Cached_Connector_Lock *connector_lock = 0;
ACE_NEW_RETURN (connector_lock,
@@ -87,43 +75,27 @@ TAO_UIOP_Connector::open (TAO_ORB_Core *orb_core)
auto_ptr<TAO_Cached_Connector_Lock> new_connector_lock (connector_lock);
-#if defined (TAO_USES_ROBUST_CONNECTION_MGMT)
ACE_NEW_RETURN (this->cached_connect_strategy_,
- TAO_CACHED_CONNECT_STRATEGY (*this->caching_strategy_,
- new_connect_creation_strategy.get (),
- 0,
- 0,
- new_connector_lock.get (),
- 1),
- -1);
-#else /* TAO_USES_ROBUST_CONNECTION_MGMT */
- TAO_CACHED_CONNECT_STRATEGY *cached_connect_strategy = 0;
- ACE_NEW_RETURN (cached_connect_strategy,
- TAO_CACHED_CONNECT_STRATEGY (
- new_connect_creation_strategy.get (),
- 0,
- 0,
- new_connector_lock.get (),
- 1),
+ CACHED_CONNECT_STRATEGY (*this->caching_strategy_,
+ new_connect_creation_strategy.get (),
+ 0,
+ 0,
+ new_connector_lock.get (),
+ 1),
-1);
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
+
+ auto_ptr<CACHED_CONNECT_STRATEGY> new_cached_connect_strategy (this->cached_connect_strategy_);
// Finally everything is fine. Make sure to take ownership away
// from the auto pointer.
connect_creation_strategy = new_connect_creation_strategy.release ();
- connector_lock = new_connector_lock.release ();
+ connector_lock = new_connector_lock.release ();
+ this->cached_connect_strategy_ = new_cached_connect_strategy.release ();
-#if defined (TAO_USES_ROBUST_CONNECTION_MGMT)
return this->base_connector_.open (this->orb_core_->reactor (),
&this->null_creation_strategy_,
this->cached_connect_strategy_,
&this->null_activation_strategy_);
-#else /* TAO_USES_ROBUST_CONNECTION_MGMT */
- return this->base_connector_.open (this->orb_core_->reactor (),
- &this->null_creation_strategy_,
- cached_connect_strategy,
- &this->null_activation_strategy_);
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
}
int
@@ -132,18 +104,9 @@ TAO_UIOP_Connector::close (void)
this->base_connector_.close ();
// Zap the creation strategy that we created earlier
-#if defined (TAO_USES_ROBUST_CONNECTION_MGMT)
delete this->cached_connect_strategy_->creation_strategy ();
delete this->cached_connect_strategy_;
delete this->caching_strategy_;
-#else /* TAO_USES_ROBUST_CONNECTION_MGMT */
- TAO_CACHED_CONNECT_STRATEGY *cached_connect_strategy =
- ACE_dynamic_cast (TAO_CACHED_CONNECT_STRATEGY *,
- this->base_connector_.connect_strategy ());
-
- delete cached_connect_strategy->creation_strategy ();
- delete cached_connect_strategy;
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
return 0;
}
@@ -202,7 +165,7 @@ TAO_UIOP_Connector::connect (TAO_Profile *profile,
// connector? We (Fred and Carlos) thought about just
// setting the hint to 0, but that would not be thread-safe
// (other threads may be touching the same profile).
- // At this point (the day before 1.0) i'm reluctant to change
+ // At this point (the day before 1.0) i'm reluctant to change
// ACE, and this fix passes all the TAO tests (including the
// new ping/pong test in the tests/Faults directory).
uiop_profile->reset_hint ();
@@ -269,24 +232,13 @@ TAO_UIOP_Connector::preconnect (const char *preconnects)
ACE_NEW_RETURN (remote_addrs,
ACE_UNIX_Addr[num_connections],
-1);
-
- ACE_Auto_Basic_Array_Ptr<ACE_UNIX_Addr> safe_remote_addrs (remote_addrs);
-
ACE_NEW_RETURN (handlers,
TAO_UIOP_Client_Connection_Handler *[num_connections],
-1);
-
- ACE_Auto_Basic_Array_Ptr<TAO_UIOP_Client_Connection_Handler *>
- safe_handlers (handlers);
-
ACE_NEW_RETURN (failures,
char[num_connections],
-1);
- // No longer need to worry about exception safety at this point.
- remote_addrs = safe_remote_addrs.release ();
- handlers = safe_handlers.release ();
-
size_t slot = 0;
// Fill in the remote address array
@@ -421,7 +373,6 @@ TAO_UIOP_Connector::object_key_delimiter (void) const
return TAO_UIOP_Profile::object_key_delimiter;
}
-#if defined (TAO_USES_ROBUST_CONNECTION_MGMT)
int
TAO_UIOP_Connector::purge_connections (void)
{
@@ -430,17 +381,17 @@ TAO_UIOP_Connector::purge_connections (void)
#define TAO_HANDLER TAO_UIOP_Client_Connection_Handler
#define TAO_SVC_TUPLE ACE_Svc_Tuple<TAO_HANDLER>
-#define TAO_ADDR TAO_UIOP_Connector::TAO_IADDR
-#define TAO_HASH_KEY TAO_UIOP_Connector::TAO_HASH_KEY
-#define TAO_COMPARE_KEYS TAO_UIOP_Connector::TAO_COMPARE_KEYS
-#define TAO_ATTRIBUTES TAO_UIOP_Connector::TAO_ATTRIBUTES
-#define TAO_CACHED_HANDLER TAO_UIOP_Connector::TAO_CACHED_HANDLER
-#define TAO_HASH_MAP TAO_UIOP_Connector::TAO_HASH_MAP
-#define TAO_HASH_MAP_ITERATOR TAO_UIOP_Connector::TAO_HASH_MAP_ITERATOR
-#define TAO_HASH_MAP_REVERSE_ITERATOR TAO_UIOP_Connector::TAO_HASH_MAP_REVERSE_ITERATOR
-#define TAO_CACHING_UTILITY TAO_UIOP_Connector::TAO_CACHING_UTILITY
-#define TAO_CACHING_STRATEGY TAO_UIOP_Connector::TAO_CACHING_STRATEGY
-#define TAO_CACHED_CONNECT_STRATEGY TAO_UIOP_Connector::TAO_CACHED_CONNECT_STRATEGY
+#define TAO_ADDR TAO_UIOP_Connector::ADDR
+#define TAO_HASH_KEY TAO_UIOP_Connector::HASH_KEY
+#define TAO_COMPARE_KEYS TAO_UIOP_Connector::COMPARE_KEYS
+#define TAO_ATTRIBUTES TAO_UIOP_Connector::ATTRIBUTES
+#define TAO_CACHED_HANDLER TAO_UIOP_Connector::CACHED_HANDLER
+#define TAO_HASH_MAP TAO_UIOP_Connector::HASH_MAP
+#define TAO_HASH_MAP_ITERATOR TAO_UIOP_Connector::HASH_MAP_ITERATOR
+#define TAO_HASH_MAP_REVERSE_ITERATOR TAO_UIOP_Connector::HASH_MAP_REVERSE_ITERATOR
+#define TAO_CACHING_UTILITY TAO_UIOP_Connector::CACHING_UTILITY
+#define TAO_CACHING_STRATEGY TAO_UIOP_Connector::CACHING_STRATEGY
+#define TAO_CACHED_CONNECT_STRATEGY TAO_UIOP_Connector::CACHED_CONNECT_STRATEGY
typedef ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
TAO_UIOP_LRU_CACHING_STRATEGY;
@@ -515,37 +466,23 @@ TAO_UIOP_Connector::make_caching_strategy (void)
this->caching_strategy_->purge_percent (resource_factory->purge_percentage ());
return 0;
}
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
//
// The TAO_Cached_Connector_Lock template instantiations are in
// Resource_Factory.cpp.
//
-#if !defined (TAO_USES_ROBUST_CONNECTION_MGMT)
-#define TAO_SVC_TUPLE ACE_Svc_Tuple<TAO_UIOP_Client_Connection_Handler>
-#define CACHED_CONNECT_STRATEGY ACE_Cached_Connect_Strategy<TAO_UIOP_Client_Connection_Handler, ACE_LSOCK_CONNECTOR, TAO_Cached_Connector_Lock>
-#define TAO_ADDR ACE_Refcounted_Hash_Recyclable<ACE_UNIX_Addr>
-#define TAO_HANDLER TAO_UIOP_Client_Connection_Handler
-#define TAO_HASH_KEY ACE_Hash<TAO_ADDR>
-#define TAO_COMPARE_KEYS ACE_Equal_To<TAO_ADDR>
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_Auto_Basic_Array_Ptr<ACE_UNIX_Addr>;
-template class ACE_Auto_Basic_Array_Ptr<TAO_UIOP_Client_Connection_Handler*>;
template class auto_ptr<TAO_UIOP_Connect_Creation_Strategy>;
+template class auto_ptr<TAO_CACHED_CONNECT_STRATEGY>;
template class ACE_Auto_Basic_Ptr<TAO_UIOP_Connect_Creation_Strategy>;
+template class ACE_Auto_Basic_Ptr<TAO_CACHED_CONNECT_STRATEGY>;
template class ACE_Node<ACE_UNIX_Addr>;
template class ACE_Unbounded_Stack<ACE_UNIX_Addr>;
template class ACE_Unbounded_Stack_Iterator<ACE_UNIX_Addr>;
-#if !defined (TAO_USES_ROBUST_CONNECTION_MGMT)
-template class CACHED_CONNECT_STRATEGY;
-template class TAO_ADDR;
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
-
template class ACE_Svc_Handler<ACE_LSOCK_STREAM, ACE_NULL_SYNCH>;
template class ACE_Refcounted_Hash_Recyclable<ACE_UNIX_Addr>;
template class ACE_NOOP_Creation_Strategy<TAO_HANDLER>;
@@ -566,6 +503,10 @@ template class ACE_Recycling_Strategy<TAO_HANDLER>;
template class ACE_Strategy_Connector<TAO_HANDLER, ACE_LSOCK_CONNECTOR>;
template class TAO_SVC_TUPLE;
+template class ACE_Pair<TAO_HANDLER *, TAO_ATTRIBUTES>;
+template class ACE_Reference_Pair<TAO_ADDR, TAO_HANDLER *>;
+template class ACE_Hash_Map_Entry<TAO_ADDR, TAO_CACHED_HANDLER>;
+
template class ACE_Hash_Map_Manager<TAO_ADDR, TAO_HANDLER *, ACE_Null_Mutex>;
template class ACE_Hash_Map_Iterator<TAO_ADDR, TAO_HANDLER *, ACE_Null_Mutex>;
template class ACE_Hash_Map_Reverse_Iterator<TAO_ADDR, TAO_HANDLER *, ACE_Null_Mutex>;
@@ -573,12 +514,6 @@ template class ACE_Hash_Map_Manager_Ex<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TA
template class ACE_Hash_Map_Iterator_Ex<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>;
template class ACE_Hash_Map_Reverse_Iterator_Ex<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>;
template class ACE_Hash_Map_Iterator_Base_Ex<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Bucket_Iterator<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>;
-
-#if defined (TAO_USES_ROBUST_CONNECTION_MGMT)
-template class ACE_Pair<TAO_HANDLER *, TAO_ATTRIBUTES>;
-template class ACE_Reference_Pair<TAO_ADDR, TAO_HANDLER *>;
-template class ACE_Hash_Map_Entry<TAO_ADDR, TAO_CACHED_HANDLER>;
template class ACE_Hash_Map_Manager<TAO_ADDR, TAO_CACHED_HANDLER, ACE_Null_Mutex>;
template class ACE_Hash_Map_Iterator<TAO_ADDR, TAO_CACHED_HANDLER, ACE_Null_Mutex>;
@@ -588,6 +523,7 @@ template class ACE_Hash_Map_Iterator_Ex<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_K
template class ACE_Hash_Map_Reverse_Iterator_Ex<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>;
template class ACE_Hash_Map_Iterator_Base_Ex<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>;
template class ACE_Hash_Map_Bucket_Iterator<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>;
+template class ACE_Hash_Map_Bucket_Iterator<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>;
// = Caching_Strategy
template class ACE_Hash_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES>;
@@ -622,24 +558,18 @@ template class ACE_Cached_Connect_Strategy<TAO_HANDLER, ACE_LSOCK_CONNECTOR, TAO
template class ACE_Cleanup_Strategy<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_MAP>;
template class ACE_Refcounted_Recyclable_Handler_Cleanup_Strategy<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_MAP>;
template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_MAP, TAO_HASH_MAP_ITERATOR, TAO_ATTRIBUTES>;
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_Auto_Basic_Array_Ptr<ACE_UNIX_Addr>
-#pragma instantiate ACE_Auto_Basic_Array_Ptr<TAO_UIOP_Client_Connection_Handler*>
#pragma instantiate auto_ptr<TAO_UIOP_Connect_Creation_Strategy>
+#pragma instantiate auto_ptr<TAO_CACHED_CONNECT_STRATEGY>
#pragma instantiate ACE_Auto_Basic_Ptr<TAO_UIOP_Connect_Creation_Strategy>
+#pragma instantiate ACE_Auto_Basic_Ptr<TAO_CACHED_CONNECT_STRATEGY>
#pragma instantiate ACE_Node<ACE_UNIX_Addr>
#pragma instantiate ACE_Unbounded_Stack<ACE_UNIX_Addr>
#pragma instantiate ACE_Unbounded_Stack_Iterator<ACE_UNIX_Addr>
-#if !defined (TAO_USES_ROBUST_CONNECTION_MGMT)
-#pragma instantiate CACHED_CONNECT_STRATEGY;
-#pragma instantiate TAO_ADDR;
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
-
#pragma instantiate ACE_Svc_Handler<ACE_LSOCK_STREAM, ACE_NULL_SYNCH>
#pragma instantiate ACE_Refcounted_Hash_Recyclable<ACE_UNIX_Addr>
#pragma instantiate ACE_NOOP_Creation_Strategy<TAO_HANDLER>
@@ -660,6 +590,10 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_Strategy_Connector<TAO_HANDLER, ACE_LSOCK_CONNECTOR>
#pragma instantiate TAO_SVC_TUPLE
+#pragma instantiate ACE_Pair<TAO_HANDLER *, TAO_ATTRIBUTES>
+#pragma instantiate ACE_Reference_Pair<TAO_ADDR, TAO_HANDLER *>
+#pragma instantiate ACE_Hash_Map_Entry<TAO_ADDR, TAO_CACHED_HANDLER>
+
#pragma instantiate ACE_Hash_Map_Manager<TAO_ADDR, TAO_HANDLER *, ACE_Null_Mutex>
#pragma instantiate ACE_Hash_Map_Iterator<TAO_ADDR, TAO_HANDLER *, ACE_Null_Mutex>
#pragma instantiate ACE_Hash_Map_Reverse_Iterator<TAO_ADDR, TAO_HANDLER *, ACE_Null_Mutex>
@@ -667,12 +601,6 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_Hash_Map_Iterator_Ex<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>
#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>
#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Bucket_Iterator<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>
-
-#if defined (TAO_USES_ROBUST_CONNECTION_MGMT)
-#pragma instantiate ACE_Pair<TAO_HANDLER *, TAO_ATTRIBUTES>
-#pragma instantiate ACE_Reference_Pair<TAO_ADDR, TAO_HANDLER *>
-#pragma instantiate ACE_Hash_Map_Entry<TAO_ADDR, TAO_CACHED_HANDLER>
#pragma instantiate ACE_Hash_Map_Manager<TAO_ADDR, TAO_CACHED_HANDLER, ACE_Null_Mutex>
#pragma instantiate ACE_Hash_Map_Iterator<TAO_ADDR, TAO_CACHED_HANDLER, ACE_Null_Mutex>
@@ -682,6 +610,7 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>
#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>
#pragma instantiate ACE_Hash_Map_Bucket_Iterator<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>
+#pragma instantiate ACE_Hash_Map_Bucket_Iterator<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, ACE_Null_Mutex>
// = Caching_Strategy
#pragma instantiate ACE_Hash_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY, TAO_COMPARE_KEYS, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES>
@@ -716,7 +645,6 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_Cleanup_Strategy<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_MAP>
#pragma instantiate ACE_Refcounted_Recyclable_Handler_Cleanup_Strategy<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_MAP>
#pragma instantiate ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_CACHED_HANDLER, TAO_HASH_MAP, TAO_HASH_MAP_ITERATOR, TAO_ATTRIBUTES>
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */