diff options
author | kirthika <kirthika@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-20 21:25:32 +0000 |
---|---|---|
committer | kirthika <kirthika@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-20 21:25:32 +0000 |
commit | 1314cfbd5911f1ce9b85f8a771b8caf89aea4a6a (patch) | |
tree | e9b074fff4635b8a0ccda905b0dce5429c5d2687 | |
parent | 86c824991fde002438a20eb35214eb6f2a93913e (diff) | |
download | ATCD-1314cfbd5911f1ce9b85f8a771b8caf89aea4a6a.tar.gz |
iadded handle_consumer object
-rw-r--r-- | tests/Cached_Accept_Conn_Test.cpp | 45 |
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 */ |