summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkirthika <kirthika@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-20 21:25:32 +0000
committerkirthika <kirthika@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-20 21:25:32 +0000
commit1314cfbd5911f1ce9b85f8a771b8caf89aea4a6a (patch)
treee9b074fff4635b8a0ccda905b0dce5429c5d2687
parent86c824991fde002438a20eb35214eb6f2a93913e (diff)
downloadATCD-1314cfbd5911f1ce9b85f8a771b8caf89aea4a6a.tar.gz
iadded handle_consumer object
-rw-r--r--tests/Cached_Accept_Conn_Test.cpp45
1 files changed, 37 insertions, 8 deletions
diff --git a/tests/Cached_Accept_Conn_Test.cpp b/tests/Cached_Accept_Conn_Test.cpp
index 4257b0afb5a..828cf7c6ff0 100644
--- a/tests/Cached_Accept_Conn_Test.cpp
+++ b/tests/Cached_Accept_Conn_Test.cpp
@@ -49,6 +49,7 @@
#include "ace/Get_Opt.h"
#include "ace/Caching_Utility_T.h"
#include "ace/Cached_Connect_Strategy_T.h"
+#include "Handle_Consumer.h"
#if defined(_MSC_VER)
#pragma warning(disable:4503)
@@ -185,6 +186,7 @@ static int listen_once = 1;
static int iterations = 2000;
static int user_has_specified_iterations = 0;
static double purge_percentage = 20;
+static size_t keep_available_handles = 10;
static Caching_Strategy_Type caching_strategy_type = ACE_ALL;
//====================================================================
@@ -287,9 +289,7 @@ Accept_Strategy<SVC_HANDLER, ACE_PEER_ACCEPTOR_2>::accept_svc_handler (SVC_HANDL
template <class SVC_HANDLER, ACE_PEER_ACCEPTOR_1> int
Accept_Strategy<SVC_HANDLER, ACE_PEER_ACCEPTOR_2>::out_of_sockets_handler (void)
{
- // ENOBUFS had to be checked on NT while ENOENT check had to be
- // added for Solaris + Linux.
- if (errno == EMFILE || errno == ENOBUFS || errno == ENOENT)
+ if (ACE::out_of_handles (errno))
{
// Close connections which are cached by explicitly purging the
// connection cache maintained by the connector.
@@ -323,9 +323,8 @@ cached_connect (STRATEGY_CONNECTOR &con,
ASYS_TEXT ("connection failed")),
-1);
- // Svc_Handler is now idle, so mark it as such and let the cache
- // recycle it.
- svc_handler->idle (1);
+ // Reset Svc_Handler state.
+ svc_handler->recycle_state (ACE_RECYCLABLE_PURGABLE_BUT_NOT_IDLE);
return 0;
}
@@ -428,6 +427,11 @@ test_connection_management (CACHING_STRATEGY &caching_strategy)
void
test_caching_strategy_type (void)
{
+ ACE_Reactor::instance ();
+
+ Handle_Consumer handle_consumer;
+ handle_consumer.consume_handles (keep_available_handles);
+
ACE_DEBUG ((LM_DEBUG, "\nLRU_Caching_Strategy\n\n"));
CACHING_STRATEGY caching_strategy;
caching_strategy.purge_percent (purge_percentage);
@@ -439,6 +443,11 @@ test_caching_strategy_type (void)
void
test_caching_strategy_type (void)
{
+ ACE_Reactor::instance ();
+
+ Handle_Consumer handle_consumer;
+ handle_consumer.consume_handles (keep_available_handles);
+
CACHING_STRATEGY *caching_strategy = 0;
switch (caching_strategy_type)
@@ -481,7 +490,7 @@ test_caching_strategy_type (void)
int
parse_args (int argc, char *argv[])
{
- ACE_Get_Opt get_opt (argc, argv, "l:i:p:c:d");
+ ACE_Get_Opt get_opt (argc, argv, "l:i:p:c:a:d");
int cc;
@@ -514,6 +523,9 @@ parse_args (int argc, char *argv[])
if (ACE_OS::strcmp (get_opt.optarg, "fifo") == 0)
caching_strategy_type = ACE_FIFO;
break;
+ case 'a':
+ keep_available_handles = atoi (get_opt.optarg);
+ break;
case '?':
case 'h':
default:
@@ -524,7 +536,8 @@ parse_args (int argc, char *argv[])
ASYS_TEXT ("[-i (iterations)] ")
ASYS_TEXT ("[-l (listen once)] ")
ASYS_TEXT ("[-d (addition debugging output)] ")
- ASYS_TEXT ("[-p (purge percent)] "),
+ ASYS_TEXT ("[-p (purge percent)] ")
+ ASYS_TEXT ("[-a (keep_available_handles)] "),
argv[0]));
return -1;
}
@@ -601,6 +614,11 @@ main (int argc,
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+// = Consume handles
+template class ACE_Node<ACE_HANDLE>;
+template class ACE_Unbounded_Set<ACE_HANDLE>;
+template class ACE_Unbounded_Set_Iterator<ACE_HANDLE>;
+
template class ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>;
template class ACE_Refcounted_Hash_Recyclable<ACE_INET_Addr>;
template class ACE_NOOP_Creation_Strategy<Client_Svc_Handler>;
@@ -692,6 +710,9 @@ template class ACE_Cleanup_Strategy<ADDR, CACHED_HANDLER, HASH_MAP>;
template class ACE_Recyclable_Handler_Cleanup_Strategy<ADDR, CACHED_HANDLER, HASH_MAP>;
template class ACE_Recyclable_Handler_Caching_Utility<ADDR, CACHED_HANDLER, HASH_MAP, HASH_MAP_ITERATOR, ATTRIBUTES>;
+template class ACE_Reverse_Lock<ACE_SYNCH_NULL_MUTEX>;
+template class ACE_Guard<ACE_Reverse_Lock<ACE_SYNCH_NULL_MUTEX> >;
+
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
#pragma instantiate ACE_Refcounted_Hash_Recyclable<ACE_INET_Addr>
@@ -757,6 +778,11 @@ template class ACE_Recyclable_Handler_Caching_Utility<ADDR, CACHED_HANDLER, HASH
#if !defined (ACE_HAS_BROKEN_EXTENDED_TEMPLATES)
+// = Consume handles
+#pragma instantiate ACE_Node<ACE_HANDLE>
+#pragma instantiate ACE_Unbounded_Set<ACE_HANDLE>
+#pragma instantiate ACE_Unbounded_Set_Iterator<ACE_HANDLE>
+
#pragma instantiate ACE_Caching_Strategy<ATTRIBUTES, CACHING_UTILITY>
#pragma instantiate ACE_LFU_Caching_Strategy<ATTRIBUTES, CACHING_UTILITY>
#pragma instantiate ACE_FIFO_Caching_Strategy<ATTRIBUTES, CACHING_UTILITY>
@@ -784,6 +810,9 @@ template class ACE_Recyclable_Handler_Caching_Utility<ADDR, CACHED_HANDLER, HASH
#pragma instantiate ACE_Recyclable_Handler_Cleanup_Strategy<ADDR, CACHED_HANDLER, HASH_MAP>
#pragma instantiate ACE_Recyclable_Handler_Caching_Utility<ADDR, CACHED_HANDLER, HASH_MAP, HASH_MAP_ITERATOR, ATTRIBUTES>
+#pragma instantiate ACE_Reverse_Lock<ACE_SYNCH_NULL_MUTEX>
+#pragma instantiate ACE_Guard<ACE_Reverse_Lock<ACE_SYNCH_NULL_MUTEX> >
+
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
#endif /* CACHED_CONNECT_TEST */