summaryrefslogtreecommitdiff
path: root/tests/Thread_Pool_Reactor_Test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Thread_Pool_Reactor_Test.cpp')
-rw-r--r--tests/Thread_Pool_Reactor_Test.cpp63
1 files changed, 37 insertions, 26 deletions
diff --git a/tests/Thread_Pool_Reactor_Test.cpp b/tests/Thread_Pool_Reactor_Test.cpp
index 0e0c43096d2..7ea967dd57c 100644
--- a/tests/Thread_Pool_Reactor_Test.cpp
+++ b/tests/Thread_Pool_Reactor_Test.cpp
@@ -104,7 +104,8 @@ parse_arg (int argc, ASYS_TCHAR *argv[])
class Acceptor_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH>
{
- // This class is the Svc_Handler used by <Acceptor>.
+ // = TITLE
+ // 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.
@@ -128,8 +129,9 @@ 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)
+ int result = this->peer ().recv (buffer, BUFSIZ * sizeof (ASYS_TCHAR);
+
+ if (result > 0)
{
ACE_DEBUG ((LM_DEBUG,
ASYS_TEXT ("(%t) Acceptor_Handler::handle_input (fd = %x)\n"),
@@ -144,14 +146,12 @@ Acceptor_Handler::handle_input (ACE_HANDLE fd)
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;
}
@@ -170,16 +170,14 @@ 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"));
+ if (ACE_Reactor::instance ()->handle_events () == -1)
+ ACE_DEBUG ((LM_DEBUG,
+ "(%t) Error handling events\n"));
}
ACE_DEBUG ((LM_DEBUG,
@@ -202,18 +200,23 @@ cli_worker (void *)
if (connect.connect (stream, addr) < 0)
{
ACE_ERROR ((LM_ERROR,
- ASYS_TEXT ("(%t) %p\n"), ASYS_TEXT ("connect")));
+ 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++)
+ for (size_t j = 0; j < cli_req_no; j++)
{
- ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("(%t) conn_worker stream handle = %x\n"),
+ 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.send_n (buf,
+ (ACE_OS::strlen (buf) + 1) * sizeof (ASYS_TCHAR));
+ ACE_OS::sleep (delay);
}
+
stream.close ();
}
@@ -226,6 +229,7 @@ worker (void *)
ACE_OS::sleep (3);
ACE_INET_Addr addr (rendezvous);
+
int grp = ACE_Thread_Manager::instance ()->spawn_n (cli_thrno,
&cli_worker,
&addr);
@@ -234,19 +238,24 @@ worker (void *)
ACE_Thread_Manager::instance ()->wait_grp (grp);
ACE_OS::sleep (1);
- ACE_DEBUG ((LM_DEBUG, ASYS_TEXT ("Shutting down...\n")));
+ 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"),
+ 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;
}
@@ -262,27 +271,29 @@ main (int argc, ASYS_TCHAR *argv[])
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.
+ // 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;
+ main_reactor = &mreactor;
ACCEPTOR acceptor;
ACE_INET_Addr accept_addr (rendezvous);
- acceptor.open (accept_addr,
- main_reactor);
-
+ if (acceptor.open (accept_addr,
+ main_reactor) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ASYS_TEXT ("%p\n"),
+ ASYS_TEXT ("open")),
+ 1);
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 ();
- }
+ result = slr.handle_events ();
ACE_ASSERT (result != -1);