summaryrefslogtreecommitdiff
path: root/examples/Timer_Queue/Async_Timer_Queue_Test.h
blob: 40002b9b82e55d922a3b84040db5df85be665aa8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/* -*- C++ -*- */

// $Id$

// ============================================================================
//
// = LIBRARY
//    examples
// 
// = FILENAME
//    Async_Timer_Queue_Test.h
//
// = DESCRIPTION
//      This test exercises the <ACE_Asynch_Timer_Queue_Adapter> 
//      using an <ACE_Timer_Heap>.
//
// = AUTHORS
//    Douglas C. Schmidt and
//    Sergio Flores-Gaitan
// ============================================================================

#if !defined (_ASYNC_TIMER_QUEUE_TEST_H_)
#define _ASYNC_TIMER_QUEUE_TEST_H_

#include "ace/Signal.h"
#include "ace/Timer_Heap.h"
#include "ace/Timer_Queue_Adapters.h"

#include "Driver.h"

class Async_Timer_Handler : public ACE_Event_Handler
  // = TITLE
  //     Target of the asynchronous timeout operation.
{
public:
  virtual int handle_timeout (const ACE_Time_Value &tv,
			      const void *arg);
  // Callback hook invoked by the <Timer_Queue>.
};

class Async_Timer_Queue 
  // = TITLE
  //     Asynchronous Timer Queue Singleton.
  //
  // = DESCRIPTION
  //     We use this class to avoid global variables and to
  //     consolidate all the Timer Queue processing in one central 
  //     place. 
{
public:
  typedef int (Async_Timer_Queue::*ACTION) (void *);

  static Async_Timer_Queue *instance (void);
   // Singleton access point.

  void schedule (u_int microsecs);
  // Schedule a timer to expire <microsecs> in the future.

  void cancel (long timer_id);
  // Cancel a timer with <timer_id>.

  void dump (void);
  // Dump the contents of the queue.

  int schedule_timer (void *argument);
  // hook method to schedule a timer.  Called from
  // <Timer_Queue_Test_Driver>

  int cancel_timer (void *argument);
  // hook method to cancel a timer.  Called from
  // <Timer_Queue_Test_Driver>

  int list_timer (void *argument);
  // hook method to list timers.  Called from
  // <Timer_Queue_Test_Driver>

  int shutdown_timer (void *argument);
  // hook method to exit the timer queue.  Called from
  // <Timer_Queue_Test_Driver>

private:
  Async_Timer_Queue (ACE_Sig_Set *);
  // Private constructor enforces the Singleton.

  static Async_Timer_Queue *instance_;
  // Pointer to the timer queue.

  ACE_Async_Timer_Queue_Adapter<ACE_Timer_Heap> tq_;
  // The adapter is instantiated by an <ACE_Timer_Heap>.
};

class Async_Timer_Queue_Test_Driver : public Timer_Queue_Test_Driver <Async_Timer_Queue *, Async_Timer_Queue, Async_Timer_Queue::ACTION>
  // = TITLE
  //    Async_Timer_Queue_Test_Driver
  //
  // = DESCRIPTION
  //    This class implements a test driver for the
  //    <Async_Timer_Queue>.  Implements a display_menu() method that
  //    prints the options for a user. and init() which initializes
  //    the driver.  The rest of the common functionality is in the
  //    parent class <Timer_Queue_Test_Driver>.
{
public:
  Async_Timer_Queue_Test_Driver (void);

  virtual int display_menu (void);
  // Print menu of options.

  virtual int init (void);
  // Initializes the driver's internal variables inherited from the parent
};

#endif /* _ASYNC_TIMER_QUEUE_TEST_H_ */