diff options
author | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-10-01 06:00:55 +0000 |
---|---|---|
committer | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-10-01 06:00:55 +0000 |
commit | 0cb5531fcbbfe96e7c759d65d76da2295ce3f0e0 (patch) | |
tree | 90b518c552c54ccfe7ad6f6c674db20701e51c48 | |
parent | 8a4cba1447e0999486ee508450234dd9bca2a0e8 (diff) | |
download | ATCD-0cb5531fcbbfe96e7c759d65d76da2295ce3f0e0.tar.gz |
*** empty log message ***
-rw-r--r-- | tests/Thread_Pool_Reactor_Test.cpp | 286 | ||||
-rw-r--r-- | tests/Thread_Pool_Reactor_Test.dsp | 159 | ||||
-rw-r--r-- | tests/tests.dsw | 14 | ||||
-rw-r--r-- | tests/version_tests/Thread_Pool_Reactor_Test.dsp | 278 |
4 files changed, 736 insertions, 1 deletions
diff --git a/tests/Thread_Pool_Reactor_Test.cpp b/tests/Thread_Pool_Reactor_Test.cpp new file mode 100644 index 00000000000..c5a82e48164 --- /dev/null +++ b/tests/Thread_Pool_Reactor_Test.cpp @@ -0,0 +1,286 @@ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// tests +// +// = FILENAME +// Thread_Pool_Reactor_Test.cpp +// +// = DESCRIPTION +// This program is a torture test of thread poll reactors. +// It starts by spawning several server threads waiting to handle +// events. Several other client threads are spawned right after +// to initiate connections to server threads. Each connection +// adds a new Svc_Handler into the TP_Reactor and sends out +// several "requests" to the server thread. After the connection +// is closed, the Svc_Handler is removed from the TP_Reactor. +// Each message is treated as a separate request by the server so +// two consecutive requests might be serviced by two different +// threads. +// +// Usage: Thread_Pool_Reactor_Test [-r <hostname:port#>] +// [-s <server thr#>] [-c <client thr#>] [-d <delay>] +// [-i <client conn attempt#>] [-n <client request# per conn>] +// +// Default value: +// <hostname:port#>: ACE_DEFAULT_RENDEZVOUS +// <server thr#>: ACE_MAX_THREADS +// <client thr#>: ACE_MAX_ITERATIONS +// <client conn attempt#>: ACE_MAX_ITERATIONS +// <client req# per conn>: ACE_MAX_THREADS +// <delay>: 50 usec +// +// = AUTHOR +// Irfan Pyarali <irfan@cs.wustl.edu> +// Nanbor Wang <nanbor@cs.wustl.edu> +// +// ============================================================================ + +#include "tests/test_config.h" +#include "ace/SOCK_Connector.h" +#include "ace/SOCK_Acceptor.h" +#include "ace/Acceptor.h" +#include "ace/Thread_Manager.h" +#include "ace/TP_Reactor.h" + +ACE_RCSID(tests, Atomic_Op_Test, "$Id$") + +#if defined(__BORLANDC__) && __BORLANDC__ >= 0x0530 +USELIB("..\ace\aced.lib"); +//--------------------------------------------------------------------------- +#endif /* defined(__BORLANDC__) && __BORLANDC__ >= 0x0530 */ + +#if defined (ACE_HAS_THREADS) + +static ASYS_TCHAR *rendezvous = ASYS_TEXT ("localhost:10010"); +static size_t svr_thrno = ACE_MAX_THREADS; +static size_t cli_thrno = ACE_MAX_ITERATIONS; +static size_t cli_conn_no = ACE_MAX_ITERATIONS; +static size_t cli_req_no = ACE_MAX_THREADS; +static int req_delay = 50; +static int main_event_loop = 1; +static ACE_Reactor *main_reactor = 0; + +void +parse_arg (int argc, ASYS_TCHAR *argv[]) +{ + // @@ TODO: Support command line arguments stated above. + + ACE_UNUSED_ARG (argc); + ACE_UNUSED_ARG (argv); +} + +class Acceptor_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH> +{ + // This class is the Svc_Handler used by <Acceptor>. +public: + Acceptor_Handler (ACE_Thread_Manager *tm = 0); + // The default constructor makes sure the right reactor is used. + +protected: + virtual int handle_input (ACE_HANDLE fd = ACE_INVALID_HANDLE); + virtual int handle_close (ACE_HANDLE fd, ACE_Reactor_Mask = 0); +}; + +typedef ACE_Strategy_Acceptor <Acceptor_Handler, ACE_SOCK_ACCEPTOR> ACCEPTOR; +typedef ACE_Thread_Pool_Strategy <Acceptor_Handler> CONCURRENCY_STRATEGY; +typedef ACE_Svc_Handler_Pool_Strategy <Acceptor_Handler> CREATION_STRATEGY; + +Acceptor_Handler::Acceptor_Handler (ACE_Thread_Manager *thr_mgr) + : ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH> (thr_mgr) +{ + // Make sure we use TP_Reactor with this class (that's the whole + // point, right?) + this->reactor (ACE_Reactor::instance ()); +} + +int +Acceptor_Handler::handle_input (ACE_HANDLE fd) +{ + ASYS_TCHAR buffer[BUFSIZ]; + int result = -1; + if ((result = this->peer ().recv (buffer, BUFSIZ * sizeof (ASYS_TCHAR))) > 0) + { + ACE_DEBUG ((LM_DEBUG, + ASYS_TEXT ("(%t) Acceptor_Handler::handle_input (fd = %x)\n"), + fd)); + buffer[result] = '\0'; + ACE_DEBUG ((LM_DEBUG, + ASYS_TEXT ("(%t) handle_input: input is %s\n"), + buffer)); + if (ACE_OS::strcmp (buffer, ASYS_TEXT ("shutdown")) == 0) + { + main_event_loop = 0; + main_reactor->notify (); + ACE_Reactor::end_event_loop (); + } + + return 0; + } + else + ACE_DEBUG ((LM_DEBUG, + ASYS_TEXT ("(%t) Acceptor_Handler: end handle input (%x)\n"), + fd)); + + return -1; +} + +int +Acceptor_Handler::handle_close (ACE_HANDLE fd, ACE_Reactor_Mask) +{ + ACE_DEBUG ((LM_DEBUG, + ASYS_TEXT ("(%t) Acceptor_Handler::handle_close (fd = %x)\n"), + fd)); + this->destroy (); + return 0; +} + +void * +svr_worker (void *) +{ + // Server thread function. + + int result = 0; + + while (!ACE_Reactor::event_loop_done ()) + { + ACE_DEBUG ((LM_DEBUG, + "(%t) handling events ....\n")); + + result = ACE_Reactor::instance ()->handle_events (); + if (result < 0) + ACE_DEBUG ((LM_DEBUG, "(%t) Error handling events\n")); + } + + ACE_DEBUG ((LM_DEBUG, + "(%t) I am done handling events. Bye, bye\n")); + + return 0; +} + +void * +cli_worker (void *) +{ + // Client thread function. + ACE_INET_Addr addr (rendezvous); + ACE_SOCK_Stream stream; + ACE_SOCK_Connector connect; + ACE_Time_Value delay (0, req_delay); + + for (size_t i = 0 ; i < cli_conn_no; i++) + { + if (connect.connect (stream, addr) < 0) + { + ACE_ERROR ((LM_ERROR, + ASYS_TEXT ("(%t) %p\n"), ASYS_TEXT ("connect"))); + continue; + } + + ASYS_TCHAR *buf = ASYS_TEXT ("Message from Connection worker\n"); + + for (size_t j = 0; j < cli_req_no; ACE_OS::sleep (delay), j++) + { + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("(%t) conn_worker stream handle = %x\n"), + stream.get_handle ())); + stream.send_n (buf, (ACE_OS::strlen (buf) + 1) * sizeof (ASYS_TCHAR)); + } + stream.close (); + } + + return 0; +} + +void * +worker (void *) +{ + ACE_OS::sleep (3); + + ACE_INET_Addr addr (rendezvous); + int grp = ACE_Thread_Manager::instance ()->spawn_n (cli_thrno, + &cli_worker, + &addr); + ACE_ASSERT (grp != -1); + + ACE_Thread_Manager::instance ()->wait_grp (grp); + + ACE_OS::sleep (1); + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("Shutting down...\n"))); + ACE_SOCK_Stream stream; + ACE_SOCK_Connector connect; + if (connect.connect (stream, addr) < 0) + ACE_ERROR ((LM_ERROR, + ASYS_TEXT ("%p Error while connecting\n"), + ASYS_TEXT ("connect"))); + + char *buf = "shutdown"; + ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("shutdown stream handle = %x\n"), + stream.get_handle ())); + stream.send_n (buf, ACE_OS::strlen (buf) + 1); + stream.close (); + return 0; +} + +int +main (int argc, ASYS_TCHAR *argv[]) +{ + ACE_START_TEST (ASYS_TEXT ("Thread_Pool_Reactor_Test")); + parse_arg (argc, argv); + + // Changed the default + ACE_TP_Reactor sr; + ACE_Reactor new_reactor (&sr); + ACE_Reactor::instance (&new_reactor); + + // Most platforms seem to have trouble accepting connections + // simultaneously in multiple threads. Therefore, we can't + // quite use the Acceptor with the TP_Reactor. Create a + // Select_Reactor and run the event_loop in the main thread. + ACE_Select_Reactor slr; + ACE_Reactor mreactor (&slr); + main_reactor = &mreactor; + ACCEPTOR acceptor; + CONCURRENCY_STRATEGY tp_strategy; + CREATION_STRATEGY new_strategy; + ACE_INET_Addr accept_addr (rendezvous); + acceptor.open (accept_addr, + main_reactor, + &new_strategy, + 0, + 0, //&tp_strategy, + 0, 0, 0, 0); + + ACE_Thread_Manager::instance ()->spawn_n (svr_thrno, + svr_worker); + ACE_Thread_Manager::instance ()->spawn (worker); + + int result = 0; + while (result >= 0 && main_event_loop) + { + result = slr.handle_events (); + } + + ACE_ASSERT (result != -1); + + ACE_Thread_Manager::instance ()->wait (); + + ACE_OS::sleep (1); + + ACE_END_TEST; + return 0; +} +#else +int +main (int, ASYS_TCHAR *[]) +{ + ACE_START_TEST (ASYS_TEXT ("Thread_Pool_Reactor_Test")); + + ACE_ERROR ((LM_ERROR, ASYS_TEXT ("threads not supported on this platform\n"))); + + ACE_END_TEST; + return 0; +} +#endif /* ACE_HAS_THREADS */ + + diff --git a/tests/Thread_Pool_Reactor_Test.dsp b/tests/Thread_Pool_Reactor_Test.dsp new file mode 100644 index 00000000000..5003602b975 --- /dev/null +++ b/tests/Thread_Pool_Reactor_Test.dsp @@ -0,0 +1,159 @@ +# Microsoft Developer Studio Project File - Name="Thread_Pool_Reactor_Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+# TARGTYPE "Win32 (ALPHA) Console Application" 0x0603
+
+CFG=Thread_Pool_Reactor_Test - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Thread_Pool_Reactor_Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Thread_Pool_Reactor_Test.mak" CFG="Thread_Pool_Reactor_Test - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 Alpha Debug" (based on\
+ "Win32 (ALPHA) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+
+!IF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Atomic_O"
+# PROP BASE Intermediate_Dir "Atomic_O"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir ".\DLL\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 Alpha Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Atomic_O"
+# PROP BASE Intermediate_Dir "Atomic_O"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ""
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+CPP=cl.exe
+# ADD BASE CPP /nologo /Gt0 /W3 /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /MTd /c
+# ADD CPP /nologo /Gt0 /W3 /GX /Zi /Od /I "..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /MDd /c
+# SUBTRACT CPP /YX
+RSC=rc.exe
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 aced.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:ALPHA /pdbtype:sept /libpath:"..\ace"
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:ALPHA /pdbtype:sept /libpath:"..\ace"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Thread_Pool_Reactor_Test - Win32 Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 Alpha Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter ".cpp"
+# Begin Source File
+
+SOURCE=.\Thread_Pool_Reactor_Test.cpp
+
+!IF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 Debug"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 Alpha Debug"
+
+DEP_CPP_ATOMI=\
+ "..\ace\ACE.h"\
+ "..\ace\ACE.i"\
+ "..\ace\Atomic_Op.i"\
+ "..\ace\Auto_Ptr.cpp"\
+ "..\ace\Auto_Ptr.h"\
+ "..\ace\Auto_Ptr.i"\
+ "..\ace\config-win32-common.h"\
+ "..\ace\config-win32.h"\
+ "..\ace\config.h"\
+ "..\ace\Event_Handler.h"\
+ "..\ace\Event_Handler.i"\
+ "..\ace\Log_Msg.h"\
+ "..\ace\Log_Priority.h"\
+ "..\ace\Log_Record.h"\
+ "..\ace\Log_Record.i"\
+ "..\ace\Managed_Object.cpp"\
+ "..\ace\Managed_Object.h"\
+ "..\ace\Managed_Object.i"\
+ "..\ace\Object_Manager.h"\
+ "..\ace\Object_Manager.i"\
+ "..\ace\OS.h"\
+ "..\ace\OS.i"\
+ "..\ace\SString.h"\
+ "..\ace\SString.i"\
+ "..\ace\stdcpp.h"\
+ "..\ace\SV_Semaphore_Complex.h"\
+ "..\ace\SV_Semaphore_Complex.i"\
+ "..\ace\SV_Semaphore_Simple.h"\
+ "..\ace\SV_Semaphore_Simple.i"\
+ "..\ace\Synch.h"\
+ "..\ace\Synch.i"\
+ "..\ace\Synch_T.cpp"\
+ "..\ace\Synch_T.h"\
+ "..\ace\Synch_T.i"\
+ "..\ace\Thread.h"\
+ "..\ace\Thread.i"\
+ "..\ace\Trace.h"\
+ "..\ace\Version.h"\
+ "..\ace\ws2tcpip.h"\
+ ".\test_config.h"\
+
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ".h"
+# Begin Source File
+
+SOURCE=.\test_config.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tests/tests.dsw b/tests/tests.dsw index 4e825b4c59c..240d891cece 100644 --- a/tests/tests.dsw +++ b/tests/tests.dsw @@ -1,4 +1,4 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00
+Microsoft Developer Studio Workspace File, Format Version 5.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
@@ -603,6 +603,18 @@ Package=<4> ###############################################################################
+Project: "Thread_Pool_Reactor_Test"=.\Thread_Pool_Reactor_Test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
Project: "Thread_Pool_Test"=.\Thread_Pool_Test.dsp - Package Owner=<4>
Package=<5>
diff --git a/tests/version_tests/Thread_Pool_Reactor_Test.dsp b/tests/version_tests/Thread_Pool_Reactor_Test.dsp new file mode 100644 index 00000000000..e54c764d393 --- /dev/null +++ b/tests/version_tests/Thread_Pool_Reactor_Test.dsp @@ -0,0 +1,278 @@ +# Microsoft Developer Studio Project File - Name="Thread_Pool_Reactor_Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=Thread_Pool_Reactor_Test - Win32 DLL Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Thread_Pool_Reactor_Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Thread_Pool_Reactor_Test.mak" CFG="Thread_Pool_Reactor_Test - Win32 DLL Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 DLL Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 static Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 DLL Unicode Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 static Unicode Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 static Unicode Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 static Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 DLL Unicode Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "Thread_Pool_Reactor_Test - Win32 DLL Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+# PROP WCE_Configuration "H/PC Ver. 2.00"
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\DLL Debug"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\DLL Debug"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\DLL Debug"
+# PROP Intermediate_Dir ".\DLL Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=1 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 aced.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 static Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\static Debug"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\static Debug"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\static Debug"
+# PROP Intermediate_Dir ".\static Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=0 /D __ACE_INLINE__=0 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 acesd.lib advapi32.lib user32.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 DLL Unicode Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\DLL Unicode Debug"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\DLL Unicode Debug"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\DLL Unicode Debug"
+# PROP Intermediate_Dir ".\DLL Unicode Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=1 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 aceud.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 static Unicode Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\static Unicode Debug"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\static Unicode Debug"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\static Unicode Debug"
+# PROP Intermediate_Dir ".\static Unicode Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\\" /D "_DEBUG" /D ACE_HAS_DLL=0 /D __ACE_INLINE__=0 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 acesud.lib user32.lib advapi32.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 static Unicode Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\static Unicode Release"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\static Unicode Release"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\static Unicode Release"
+# PROP Intermediate_Dir ".\static Unicode Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=0 /D __ACE_INLINE__=0 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 acesu.lib user32.lib advapi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 static Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\static Release"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\static Release"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\static Release"
+# PROP Intermediate_Dir ".\static Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=0 /D __ACE_INLINE__=0 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 aces.lib advapi32.lib user32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 DLL Unicode Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\DLL Unicode Release"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\DLL Unicode Release"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\DLL Unicode Release"
+# PROP Intermediate_Dir ".\DLL Unicode Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=1 /D "UNICODE" /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 aceu.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ELSEIF "$(CFG)" == "Thread_Pool_Reactor_Test - Win32 DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Thread_Pool_Reactor_Test\DLL Release"
+# PROP BASE Intermediate_Dir ".\Thread_Pool_Reactor_Test\DLL Release"
+# PROP BASE Target_Dir ".\Thread_Pool_Reactor_Test"
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir ".\DLL Release"
+# PROP Intermediate_Dir ".\DLL Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ".\Thread_Pool_Reactor_Test"
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\\" /D "NDEBUG" /D ACE_HAS_DLL=1 /D "WIN32" /D "_CONSOLE" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\ace"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Thread_Pool_Reactor_Test - Win32 DLL Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 static Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 DLL Unicode Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 static Unicode Debug"
+# Name "Thread_Pool_Reactor_Test - Win32 static Unicode Release"
+# Name "Thread_Pool_Reactor_Test - Win32 static Release"
+# Name "Thread_Pool_Reactor_Test - Win32 DLL Unicode Release"
+# Name "Thread_Pool_Reactor_Test - Win32 DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=..\Thread_Pool_Reactor_Test.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# Begin Source File
+
+SOURCE=..\test_config.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
|