summaryrefslogtreecommitdiff
path: root/examples/Reactor/WFMO_Reactor/test_apc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/Reactor/WFMO_Reactor/test_apc.cpp')
-rw-r--r--examples/Reactor/WFMO_Reactor/test_apc.cpp100
1 files changed, 0 insertions, 100 deletions
diff --git a/examples/Reactor/WFMO_Reactor/test_apc.cpp b/examples/Reactor/WFMO_Reactor/test_apc.cpp
deleted file mode 100644
index 00a1f4a9b1c..00000000000
--- a/examples/Reactor/WFMO_Reactor/test_apc.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-// $Id$
-//
-// ============================================================================
-//
-// = LIBRARY
-// examples
-//
-// = FILENAME
-// test_apc.cpp
-//
-// = DESCRIPTION
-//
-// Tests the WFMO_Reactor's ability to handle regular APC
-// notifications.
-//
-// = AUTHOR
-//
-// Irfan Pyarali
-//
-// ============================================================================
-
-#include "ace/Reactor.h"
-
-void queue_apc (void);
-
-class Event_Handler : public ACE_Event_Handler
-{
-public:
- int handle_signal (int signum, siginfo_t * = 0, ucontext_t * = 0);
-
- int handle_timeout (const ACE_Time_Value &tv,
- const void *arg = 0);
-
- ACE_Auto_Event handle_;
- int iterations_;
-};
-
-int
-Event_Handler::handle_signal (int signum, siginfo_t *, ucontext_t *)
-{
- ACE_DEBUG ((LM_DEBUG,
- "handling signal: %d iterations left\n",
- --this->iterations_));
-
- if (this->iterations_ == 0)
- ACE_Reactor::end_event_loop ();
-
- return 0;
-}
-
-int
-Event_Handler::handle_timeout (const ACE_Time_Value &tv,
- const void *arg)
-{
- ACE_DEBUG ((LM_DEBUG, "(%t) timeout occured @ %T\n"));
-
- queue_apc ();
-
- return 0;
-}
-
-Event_Handler event_handler;
-
-void WINAPI
-apc_callback (DWORD)
-{
- ACE_DEBUG ((LM_DEBUG, "(%t) apc occured @ %T\n"));
-
- event_handler.handle_.signal ();
-}
-
-void
-queue_apc (void)
-{
- DWORD result = ::QueueUserAPC (&apc_callback, // pointer to APC function
- ::GetCurrentThread (), // handle to the thread
- 0 // argument for the APC function
- );
- if (result == FALSE)
- ACE_OS::exit (-1);
-}
-
-int
-main (void)
-{
- event_handler.iterations_ = 5;
- ACE_ASSERT (ACE_Reactor::instance ()->register_handler (&event_handler,
- event_handler.handle_.handle ()) == 0);
-
- ACE_Time_Value timeout (2);
- ACE_ASSERT (ACE_Reactor::instance ()->schedule_timer (&event_handler,
- 0,
- timeout,
- timeout) != -1);
-
- ACE_Reactor::run_alertable_event_loop ();
-
- return 0;
-}
-