summaryrefslogtreecommitdiff
path: root/TAO/tao
diff options
context:
space:
mode:
authorkirthika <kirthika@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-04-03 12:54:20 +0000
committerkirthika <kirthika@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-04-03 12:54:20 +0000
commitc60ce4c7310984c190326046a5d70289277d53f1 (patch)
treef5eeb824d7289306db391a1e1e8cf1a0597c4447 /TAO/tao
parenta78693fc1517b117a9e9296a2ce3e6ebebedcd8c (diff)
downloadATCD-c60ce4c7310984c190326046a5d70289277d53f1.tar.gz
Mon Apr 3 05:20:00 2000 Kirthika Parameswaran
<kirthika@cs.wustl.edu>
Diffstat (limited to 'TAO/tao')
-rw-r--r--TAO/tao/IIOP_Connector.cpp26
-rw-r--r--TAO/tao/IIOP_Connector.h6
-rw-r--r--TAO/tao/MessagingC.cpp126
-rw-r--r--TAO/tao/MessagingC.h73
-rw-r--r--TAO/tao/SHMIOP_Connector.cpp24
-rw-r--r--TAO/tao/SHMIOP_Connector.h6
-rw-r--r--TAO/tao/UIOP_Connector.cpp24
-rw-r--r--TAO/tao/UIOP_Connector.h6
-rw-r--r--TAO/tao/corba.h2
-rw-r--r--TAO/tao/corbafwd.h4
10 files changed, 266 insertions, 31 deletions
diff --git a/TAO/tao/IIOP_Connector.cpp b/TAO/tao/IIOP_Connector.cpp
index f0db86ef2e3..200690b97e6 100644
--- a/TAO/tao/IIOP_Connector.cpp
+++ b/TAO/tao/IIOP_Connector.cpp
@@ -35,7 +35,9 @@ TAO_IIOP_Connector::purge_connections (void)
typedef ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
TAO_IIOP_LRU_CACHING_STRATEGY;
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+# if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
+
typedef TAO_IIOP_LRU_CACHING_STRATEGY
TAO_IIOP_CACHING_STRATEGY;
#else
@@ -55,7 +57,7 @@ typedef ACE_Caching_Strategy_Adapter<TAO_ATTRIBUTES, TAO_CACHING_UTILITY, TAO_II
TAO_IIOP_FIFO_CACHING_STRATEGY_ADAPTER;
typedef ACE_Caching_Strategy_Adapter<TAO_ATTRIBUTES, TAO_CACHING_UTILITY, TAO_IIOP_NULL_CACHING_STRATEGY>
TAO_IIOP_NULL_CACHING_STRATEGY_ADAPTER;
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES or TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY*/
int
TAO_IIOP_Connector::make_caching_strategy (void)
@@ -63,7 +65,8 @@ TAO_IIOP_Connector::make_caching_strategy (void)
TAO_Resource_Factory *resource_factory =
this->orb_core_->resource_factory ();
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
ACE_NEW_RETURN (this->caching_strategy_,
TAO_IIOP_CACHING_STRATEGY,
-1);
@@ -96,7 +99,9 @@ TAO_IIOP_Connector::make_caching_strategy (void)
break;
}
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES or
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1*/
+
this->caching_strategy_->purge_percent (resource_factory->purge_percentage ());
return 0;
@@ -180,8 +185,8 @@ template class ACE_Hash_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY,
template class ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
-#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
-
+#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0)
template class ACE_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
template class ACE_LFU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
template class ACE_FIFO_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
@@ -200,7 +205,8 @@ template class ACE_Cache_Map_Reverse_Iterator<TAO_ADDR, TAO_HANDLER *, TAO_HASH_
template class ACE_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_MAP, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES>;
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0*/
template class ACE_Cached_Connect_Strategy_Ex<TAO_HANDLER, ACE_SOCK_CONNECTOR, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES, TAO_Cached_Connector_Lock>;
template class ACE_Cached_Connect_Strategy<TAO_HANDLER, ACE_SOCK_CONNECTOR, TAO_Cached_Connector_Lock>;
@@ -274,7 +280,8 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
-#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0)
#pragma instantiate ACE_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
#pragma instantiate ACE_LFU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
@@ -294,7 +301,8 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_MAP, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES>
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0*/
#pragma instantiate ACE_Cached_Connect_Strategy_Ex<TAO_HANDLER, ACE_SOCK_CONNECTOR, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES, TAO_Cached_Connector_Lock>
#pragma instantiate ACE_Cached_Connect_Strategy<TAO_HANDLER, ACE_SOCK_CONNECTOR, TAO_Cached_Connector_Lock>
diff --git a/TAO/tao/IIOP_Connector.h b/TAO/tao/IIOP_Connector.h
index 0c39b49935b..98cfa55bfb3 100644
--- a/TAO/tao/IIOP_Connector.h
+++ b/TAO/tao/IIOP_Connector.h
@@ -161,7 +161,8 @@ public:
TAO_ATTRIBUTES>
TAO_CACHING_UTILITY;
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
typedef ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES,
TAO_CACHING_UTILITY>
TAO_CACHING_STRATEGY;
@@ -169,7 +170,8 @@ public:
typedef ACE_Caching_Strategy<TAO_ATTRIBUTES,
TAO_CACHING_UTILITY>
TAO_CACHING_STRATEGY;
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1*/
typedef ACE_Cached_Connect_Strategy_Ex<TAO_IIOP_Client_Connection_Handler,
ACE_SOCK_CONNECTOR,
diff --git a/TAO/tao/MessagingC.cpp b/TAO/tao/MessagingC.cpp
index e3da125c1c2..518dddd09c6 100644
--- a/TAO/tao/MessagingC.cpp
+++ b/TAO/tao/MessagingC.cpp
@@ -1586,6 +1586,132 @@ const char* Messaging::ReplyHandler::_interface_repository_id (void) const
return "IDL:Messaging/ReplyHandler:1.0";
}
+#if (TAO_HAS_SMART_PROXIES == 1)
+ Messaging::TAO_Messaging_ReplyHandler_Default_Proxy_Factory::TAO_Messaging_ReplyHandler_Default_Proxy_Factory (int register_proxy_factory)
+ {
+ if (register_proxy_factory)
+ {
+ TAO_Messaging_ReplyHandler_PROXY_FACTORY_ADAPTER::instance ()->register_proxy_factory (this);
+ }
+ }
+
+ Messaging::TAO_Messaging_ReplyHandler_Default_Proxy_Factory::~TAO_Messaging_ReplyHandler_Default_Proxy_Factory (void)
+ {
+}
+
+Messaging::ReplyHandler_ptr
+Messaging::TAO_Messaging_ReplyHandler_Default_Proxy_Factory::create_proxy (
+ ::Messaging::ReplyHandler_ptr proxy,
+ CORBA::Environment &
+ )
+{
+ return proxy;
+}
+
+Messaging::TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter::TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter (void)
+ : proxy_factory_ (0),
+ delete_proxy_factory_ (0)
+{
+}
+
+Messaging::TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter::~TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter (void)
+{
+ // Making sure the factory which the adapter has is destroyed with it.
+ if (this->proxy_factory_ != 0)
+ delete this->proxy_factory_;
+}
+
+int
+Messaging::TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter::register_proxy_factory (
+ TAO_Messaging_ReplyHandler_Default_Proxy_Factory *df,
+ CORBA::Environment &ACE_TRY_ENV
+ )
+{
+ ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon,
+ this->lock_, 0));
+ // Remove any existing <proxy_factory_> and replace with the new one.
+ this->unregister_proxy_factory (ACE_TRY_ENV);
+ this->proxy_factory_ = df;
+ this->delete_proxy_factory_ = 0;
+return 0;
+}
+
+int
+Messaging::TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter::unregister_proxy_factory (
+ CORBA::Environment &
+ )
+{
+ ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon,
+ this->lock_, 0));
+ if (this->delete_proxy_factory_ == 0 && this->proxy_factory_ != 0)
+ {
+ // Its necessary to set <delete_proxy_factory_> to 1 to make sure that it
+ // doesnt get into an infinite loop in <unregister_proxy_factory> as it is
+ // invoked in the destructor of the class too.
+ this->delete_proxy_factory_ = 1;
+ delete this->proxy_factory_;
+ this->proxy_factory_ = 0;
+ }
+return 0;
+}
+
+Messaging::ReplyHandler_ptr
+Messaging::TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter::create_proxy (
+ ::Messaging::ReplyHandler_ptr proxy,
+ CORBA::Environment &
+ )
+{
+ ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon,
+ this->lock_, 0));
+ // Verify that an <proxy_factory_> is available else make one.
+ if (this->proxy_factory_ == 0)
+ ACE_NEW_RETURN (this->proxy_factory_,
+ TAO_Messaging_ReplyHandler_Default_Proxy_Factory (1),
+ 0);
+
+
+ return this->proxy_factory_->create_proxy (proxy);
+}
+
+Messaging::TAO_Messaging_ReplyHandler_Smart_Proxy_Base::TAO_Messaging_ReplyHandler_Smart_Proxy_Base (void)
+{
+}
+
+Messaging::TAO_Messaging_ReplyHandler_Smart_Proxy_Base::~TAO_Messaging_ReplyHandler_Smart_Proxy_Base (void)
+{
+}
+
+TAO_Stub *
+Messaging::TAO_Messaging_ReplyHandler_Smart_Proxy_Base::_stubobj (void) const
+{
+ return this->base_proxy_->_stubobj ();
+}
+
+Messaging::ReplyHandler_ptr
+Messaging::TAO_Messaging_ReplyHandler_Smart_Proxy_Base::get_proxy (void)
+
+{
+ // Obtain the real proxy stored in <base_proxy_>
+ if (CORBA::is_nil (this->proxy_.in ()))
+ {
+ // Necessary to do this else you are stuck in an infinte loop
+ // creating smart proxies!
+ TAO_Messaging_ReplyHandler_PROXY_FACTORY_ADAPTER::instance ()->unregister_proxy_factory ();
+ this->proxy_ = ::Messaging::ReplyHandler::_unchecked_narrow (this->base_proxy_.in ());
+ }
+
+ return this->proxy_.in ();
+ }
+
+ #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) || \
+ defined (ACE_HAS_GNU_REPO)
+ template class ACE_Singleton<Messaging::TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter, ACE_SYNCH_RECURSIVE_MUTEX >;
+ #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+ #pragma instantiate ACE_Singleton<Messaging::TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter, ACE_SYNCH_RECURSIVE_MUTEX>
+ #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
+
+#endif /*TAO_HAS_SMART_PROXIES*/
+
static const CORBA::Long _oc_Messaging_ReplyHandler[] =
{
TAO_ENCAP_BYTE_ORDER, // byte order
diff --git a/TAO/tao/MessagingC.h b/TAO/tao/MessagingC.h
index 6d08b3d7069..845d535fde2 100644
--- a/TAO/tao/MessagingC.h
+++ b/TAO/tao/MessagingC.h
@@ -45,6 +45,11 @@
#include "tao/PollableC.h"
#include "tao/varout.h"
+#if (TAO_HAS_SMART_PROXIES == 1)
+#include "tao/Smart_Proxies.h"
+#include "ace/Singleton.h"
+#endif /*TAO_HAS_SMART_PROXIES ==1*/
+
#if defined (TAO_EXPORT_MACRO)
#undef TAO_EXPORT_MACRO
#endif
@@ -1961,6 +1966,74 @@ TAO_NAMESPACE Messaging
void operator= (const ReplyHandler &);
};
+#if (TAO_HAS_SMART_PROXIES == 1)
+class TAO_Messaging_ReplyHandler_Default_Proxy_Factory
+{
+public:
+
+ TAO_Messaging_ReplyHandler_Default_Proxy_Factory (int register_proxy_factory = 1);
+
+ virtual ~TAO_Messaging_ReplyHandler_Default_Proxy_Factory (void);
+
+ virtual ReplyHandler_ptr create_proxy (
+ ReplyHandler_ptr proxy,
+ CORBA::Environment &env =
+ TAO_default_environment ()
+ );
+};
+
+class TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter
+{
+public:
+
+ friend class ACE_Singleton<TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter, ACE_SYNCH_RECURSIVE_MUTEX>;
+
+ int register_proxy_factory (
+ TAO_Messaging_ReplyHandler_Default_Proxy_Factory *df,
+ CORBA::Environment &env =
+ TAO_default_environment ()
+ );
+
+ int unregister_proxy_factory (
+ CORBA::Environment &env =
+ TAO_default_environment ()
+ );
+
+ ReplyHandler_ptr create_proxy (
+ ReplyHandler_ptr proxy,
+ CORBA::Environment &env =
+ TAO_default_environment ()
+ );
+
+protected:
+ TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter (void);
+ ~TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter (void);
+ TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter &operator= (
+ const TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter &
+ );
+ TAO_Messaging_ReplyHandler_Default_Proxy_Factory *proxy_factory_;
+ int delete_proxy_factory_;
+ ACE_SYNCH_RECURSIVE_MUTEX lock_;
+
+};
+
+typedef ACE_Singleton<TAO_Messaging_ReplyHandler_Proxy_Factory_Adapter, ACE_SYNCH_RECURSIVE_MUTEX> TAO_Messaging_ReplyHandler_PROXY_FACTORY_ADAPTER;
+
+class TAO_Messaging_ReplyHandler_Smart_Proxy_Base
+ : public virtual ReplyHandler,
+ public virtual TAO_Smart_Proxy_Base
+{
+public:
+ TAO_Messaging_ReplyHandler_Smart_Proxy_Base (void);
+ ~TAO_Messaging_ReplyHandler_Smart_Proxy_Base (void);
+ virtual TAO_Stub *_stubobj (void) const;
+
+protected:
+ ::Messaging::ReplyHandler_ptr get_proxy (void);
+ ::Messaging::ReplyHandler_var proxy_;
+};
+
+#endif /*TAO_HAS_SMART_PROXIES*/
TAO_NAMESPACE_STORAGE_CLASS CORBA::TypeCode_ptr _tc_ReplyHandler;
#endif /* TAO_HAS_AMI_CALLBACK == 1 || TAO_HAS_AMI_POLLER == 1 */
diff --git a/TAO/tao/SHMIOP_Connector.cpp b/TAO/tao/SHMIOP_Connector.cpp
index 36501849f49..43ce22451da 100644
--- a/TAO/tao/SHMIOP_Connector.cpp
+++ b/TAO/tao/SHMIOP_Connector.cpp
@@ -38,7 +38,8 @@ TAO_SHMIOP_Connector::purge_connections (void)
typedef ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
TAO_SHMIOP_LRU_CACHING_STRATEGY;
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
typedef TAO_SHMIOP_LRU_CACHING_STRATEGY
TAO_SHMIOP_CACHING_STRATEGY;
#else
@@ -58,7 +59,8 @@ typedef ACE_Caching_Strategy_Adapter<TAO_ATTRIBUTES, TAO_CACHING_UTILITY, TAO_SH
TAO_SHMIOP_FIFO_CACHING_STRATEGY_ADAPTER;
typedef ACE_Caching_Strategy_Adapter<TAO_ATTRIBUTES, TAO_CACHING_UTILITY, TAO_SHMIOP_NULL_CACHING_STRATEGY>
TAO_SHMIOP_NULL_CACHING_STRATEGY_ADAPTER;
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1*/
int
TAO_SHMIOP_Connector::make_caching_strategy (void)
@@ -66,7 +68,8 @@ TAO_SHMIOP_Connector::make_caching_strategy (void)
TAO_Resource_Factory *resource_factory =
this->orb_core_->resource_factory ();
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
ACE_NEW_RETURN (this->caching_strategy_,
TAO_SHMIOP_CACHING_STRATEGY,
-1);
@@ -99,7 +102,8 @@ TAO_SHMIOP_Connector::make_caching_strategy (void)
break;
}
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1*/
this->caching_strategy_->purge_percent (resource_factory->purge_percentage ());
return 0;
@@ -174,7 +178,8 @@ template class ACE_Hash_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY,
template class ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
-#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0)
template class ACE_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
template class ACE_LFU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
@@ -194,7 +199,8 @@ template class ACE_Cache_Map_Reverse_Iterator<TAO_ADDR, TAO_HANDLER *, TAO_HASH_
template class ACE_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_MAP, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES>;
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0*/
template class ACE_Cached_Connect_Strategy_Ex<TAO_HANDLER, ACE_MEM_CONNECTOR, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES, TAO_Cached_Connector_Lock>;
template class ACE_Cached_Connect_Strategy<TAO_HANDLER, ACE_MEM_CONNECTOR, TAO_Cached_Connector_Lock>;
@@ -260,7 +266,8 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
-#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0)
#pragma instantiate ACE_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
#pragma instantiate ACE_LFU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
@@ -280,7 +287,8 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_MAP, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES>
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0*/
#pragma instantiate ACE_Cached_Connect_Strategy_Ex<TAO_HANDLER, ACE_MEM_CONNECTOR, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES, TAO_Cached_Connector_Lock>
#pragma instantiate ACE_Cached_Connect_Strategy<TAO_HANDLER, ACE_MEM_CONNECTOR, TAO_Cached_Connector_Lock>
diff --git a/TAO/tao/SHMIOP_Connector.h b/TAO/tao/SHMIOP_Connector.h
index a990970d513..feb408161c7 100644
--- a/TAO/tao/SHMIOP_Connector.h
+++ b/TAO/tao/SHMIOP_Connector.h
@@ -164,7 +164,8 @@ public:
TAO_ATTRIBUTES>
TAO_CACHING_UTILITY;
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
typedef ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES,
TAO_CACHING_UTILITY>
TAO_CACHING_STRATEGY;
@@ -172,7 +173,8 @@ public:
typedef ACE_Caching_Strategy<TAO_ATTRIBUTES,
TAO_CACHING_UTILITY>
TAO_CACHING_STRATEGY;
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0*/
typedef ACE_Cached_Connect_Strategy_Ex<TAO_SHMIOP_Client_Connection_Handler,
ACE_MEM_CONNECTOR,
diff --git a/TAO/tao/UIOP_Connector.cpp b/TAO/tao/UIOP_Connector.cpp
index 67ead2ce0d3..3cc6d2640c1 100644
--- a/TAO/tao/UIOP_Connector.cpp
+++ b/TAO/tao/UIOP_Connector.cpp
@@ -38,7 +38,8 @@ TAO_UIOP_Connector::purge_connections (void)
typedef ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
TAO_UIOP_LRU_CACHING_STRATEGY;
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
typedef TAO_UIOP_LRU_CACHING_STRATEGY
TAO_UIOP_CACHING_STRATEGY;
#else
@@ -58,7 +59,8 @@ typedef ACE_Caching_Strategy_Adapter<TAO_ATTRIBUTES, TAO_CACHING_UTILITY, TAO_UI
TAO_UIOP_FIFO_CACHING_STRATEGY_ADAPTER;
typedef ACE_Caching_Strategy_Adapter<TAO_ATTRIBUTES, TAO_CACHING_UTILITY, TAO_UIOP_NULL_CACHING_STRATEGY>
TAO_UIOP_NULL_CACHING_STRATEGY_ADAPTER;
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1*/
int
TAO_UIOP_Connector::make_caching_strategy (void)
@@ -67,7 +69,8 @@ TAO_UIOP_Connector::make_caching_strategy (void)
TAO_Resource_Factory *resource_factory =
this->orb_core_->resource_factory ();
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
ACE_NEW_RETURN (this->caching_strategy_,
TAO_UIOP_CACHING_STRATEGY,
-1);
@@ -99,7 +102,8 @@ TAO_UIOP_Connector::make_caching_strategy (void)
-1);
break;
}
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1*/
this->caching_strategy_->purge_percent (resource_factory->purge_percentage ());
return 0;
@@ -183,7 +187,8 @@ template class ACE_Hash_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_KEY,
template class ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
-#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0)
template class ACE_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
template class ACE_LFU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>;
@@ -203,7 +208,8 @@ template class ACE_Cache_Map_Reverse_Iterator<TAO_ADDR, TAO_HANDLER *, TAO_HASH_
template class ACE_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_MAP, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES>;
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0*/
template class ACE_Cached_Connect_Strategy_Ex<TAO_HANDLER, ACE_LSOCK_CONNECTOR, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES, TAO_Cached_Connector_Lock>;
template class ACE_Cached_Connect_Strategy<TAO_HANDLER, ACE_LSOCK_CONNECTOR, TAO_Cached_Connector_Lock>;
@@ -277,7 +283,8 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
-#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0)
#pragma instantiate ACE_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
#pragma instantiate ACE_LFU_Caching_Strategy<TAO_ATTRIBUTES, TAO_CACHING_UTILITY>
@@ -297,7 +304,8 @@ template class ACE_Refcounted_Recyclable_Handler_Caching_Utility<TAO_ADDR, TAO_C
#pragma instantiate ACE_Cache_Map_Manager<TAO_ADDR, TAO_HANDLER *, TAO_HASH_MAP, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES>
-#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES */
+#endif /* ACE_HAS_BROKEN_EXTENDED_TEMPLATES
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 0*/
#pragma instantiate ACE_Cached_Connect_Strategy_Ex<TAO_HANDLER, ACE_LSOCK_CONNECTOR, TAO_CACHING_STRATEGY, TAO_ATTRIBUTES, TAO_Cached_Connector_Lock>
#pragma instantiate ACE_Cached_Connect_Strategy<TAO_HANDLER, ACE_LSOCK_CONNECTOR, TAO_Cached_Connector_Lock>
diff --git a/TAO/tao/UIOP_Connector.h b/TAO/tao/UIOP_Connector.h
index 6f5d4048ecc..d47575bebd7 100644
--- a/TAO/tao/UIOP_Connector.h
+++ b/TAO/tao/UIOP_Connector.h
@@ -164,7 +164,8 @@ public:
TAO_ATTRIBUTES>
TAO_CACHING_UTILITY;
-#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+#if defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES) || \
+(TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1)
typedef ACE_LRU_Caching_Strategy<TAO_ATTRIBUTES,
TAO_CACHING_UTILITY>
TAO_CACHING_STRATEGY;
@@ -180,7 +181,8 @@ public:
TAO_ATTRIBUTES,
TAO_Cached_Connector_Lock>
TAO_CACHED_CONNECT_STRATEGY;
-#endif /* TAO_USES_ROBUST_CONNECTION_MGMT */
+#endif /* TAO_USES_ROBUST_CONNECTION_MGMT
+ TAO_HAS_MINIMUM_CONNECTION_CACHING_STRATEGY == 1*/
typedef ACE_NOOP_Creation_Strategy<TAO_UIOP_Client_Connection_Handler>
TAO_NULL_CREATION_STRATEGY;
diff --git a/TAO/tao/corba.h b/TAO/tao/corba.h
index 2962a56a1d8..dcf0f3c2733 100644
--- a/TAO/tao/corba.h
+++ b/TAO/tao/corba.h
@@ -58,7 +58,9 @@
// TAO specific files, avoid them as much as possible.
#include "tao/Interceptor.h"
+#if (TAO_HAS_SMART_PROXES == 1)
#include "tao/Smart_Proxies.h"
+#endif /*TAO_HAS_SMART_PROXES == 1*/
#include "tao/Stub.h"
#include "tao/params.h"
#include "tao/ORB_Core.h"
diff --git a/TAO/tao/corbafwd.h b/TAO/tao/corbafwd.h
index 5da06d1a9f1..10fc0ed8647 100644
--- a/TAO/tao/corbafwd.h
+++ b/TAO/tao/corbafwd.h
@@ -406,6 +406,10 @@ typedef CORBA_TypeCodeFactory *CORBA_TypeCodeFactory_ptr;
#endif /* TAO_HAS_INTERFACE_REPOSITORY == 1 */
+#if (TAO_HAS_SMART_PROXIES == 1)
+class TAO_Smart_Proxy_Base;
+#endif /*TAO_HAS_SMART_PROXIES == 1*/
+
class CORBA_Bounds;
typedef CORBA_Bounds *CORBA_Bounds_ptr;