diff options
Diffstat (limited to 'examples/APG/Timers/CB.cpp')
-rw-r--r-- | examples/APG/Timers/CB.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/examples/APG/Timers/CB.cpp b/examples/APG/Timers/CB.cpp new file mode 100644 index 00000000000..c8c41687698 --- /dev/null +++ b/examples/APG/Timers/CB.cpp @@ -0,0 +1,67 @@ +// $Id$ + +#include "ace/Log_Msg.h" +#include "CB.h" +#include "TimerDispatcher.h" + +CB::CB () : count_(0) +{ + ACE_TRACE (ACE_TEXT ("CB::CB")); +} + +// Listing 1 code/ch20 +int CB::handle_timeout (const ACE_Time_Value &, + const void *arg) +{ + ACE_TRACE (ACE_TEXT ("CB::handle_timeout")); + + const int *val = ACE_static_cast (const int*, arg); + ACE_ASSERT ((*val) == timerID_); + + ACE_UNUSED_ARG (val); + + if (count_ == 5) + { + ACE_DEBUG ((LM_DEBUG, + ACE_TEXT ("Reseting interval for timer %d\n"), + timerID_)); + + // New interval is 10 ms. + ACE_Time_Value interval (0L, 1000L); + ACE_ASSERT (Timer::instance ()->reset_interval + (timerID_, interval) != -1); + + ACE_UNUSED_ARG (interval); + } + + if (count_++ == 10) + { + ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Canceling %d\n"), + timerID_)); + ACE_ASSERT ((Timer::instance ()->cancel (this)) != 0); + } + + return 0; +} +// Listing 1 + +void +CB::setID (long timerID) +{ + ACE_TRACE (ACE_TEXT ("CB::setID")); + timerID_ = timerID; +} + +long +CB::getID (void) +{ + ACE_TRACE (ACE_TEXT ("CB::getID")); + return timerID_; +} + +int +CB::handle_close (ACE_HANDLE, ACE_Reactor_Mask) +{ + ACE_TRACE (ACE_TEXT ("CB::handle_close")); + return 0; +} |