#include <Timer_Queue_Adapters.h>
Inheritance diagram for ACE_Thread_Timer_Queue_Adapter< TQ >:
Public Types | |
typedef TQ | TIMER_QUEUE |
Trait for the underlying queue type. | |
Public Methods | |
ACE_Thread_Timer_Queue_Adapter (ACE_Thread_Manager *=ACE_Thread_Manager::instance(), TQ *timer_queue=0) | |
virtual | ~ACE_Thread_Timer_Queue_Adapter (void) |
Destructor. | |
long | schedule (ACE_Event_Handler *handler, const void *act, const ACE_Time_Value &future_time, const ACE_Time_Value &interval=ACE_Time_Value::zero) |
int | cancel (long timer_id, const void **act=0) |
virtual int | svc (void) |
Runs the dispatching thread. | |
virtual void | deactivate (void) |
Inform the dispatching thread that it should terminate. | |
ACE_SYNCH_RECURSIVE_MUTEX & | mutex (void) |
Access the locking mechanism, useful for iteration. | |
TQ & | timer_queue (void) |
int | timer_queue (TQ *tq) |
Set a user-specified timer queue. | |
TQ * | timer_queue (void) const |
Return the current <TQ>. | |
ACE_thread_t | thr_id (void) const |
Return the thread id of our active object. | |
virtual int | activate (long flags=THR_NEW_LWP|THR_JOINABLE, int n_threads=1, int force_active=0, long priority=ACE_DEFAULT_THREAD_PRIORITY, int grp_id=-1, ACE_Task_Base *task=0, ACE_hthread_t thread_handles[]=0, void *stack[]=0, size_t stack_size[]=0, ACE_thread_t thread_names[]=0) |
Private Attributes | |
TQ * | timer_queue_ |
The underlying Timer_Queue. | |
int | delete_timer_queue_ |
ACE_SYNCH_RECURSIVE_MUTEX | mutex_ |
ACE_SYNCH_RECURSIVE_CONDITION | condition_ |
int | active_ |
ACE_thread_t | thr_id_ |
Thread id of our active object task. |
This implementation of a Timer_Queue uses a separate thread to dispatch the timers. The base queue need not be thread safe, this class takes all the necessary locks.
|
Trait for the underlying queue type.
|
|
Creates the timer queue. Activation of the task is the user's responsibility. Optionally a pointer to a timer queue can be passed, when no pointer is passed, a TQ is dynamically created |
|
Destructor.
|
|
We override the default activate() method so that we can ensure that only a single thread is ever spawned. Otherwise, too many weird things can happen... Reimplemented from ACE_Task_Base. |
|
Cancel the <timer_id> and return the <act> parameter if an address is passed in. Also wakes up the dispatching thread. |
|
Inform the dispatching thread that it should terminate.
|
|
Access the locking mechanism, useful for iteration.
|
|
Schedule the timer according to the semantics of the <TQ>; wakes up the dispatching thread. |
|
Runs the dispatching thread.
Reimplemented from ACE_Task_Base. |
|
Return the thread id of our active object.
|
|
Return the current <TQ>.
|
|
Set a user-specified timer queue.
|
|
|
|
When deactivate is called this variable turns to false and the dispatching thread is signalled, to terminate its main loop. |
|
The dispatching thread sleeps on this condition while waiting to dispatch the next timer; it is used to wake it up if there is a change on the timer queue. |
|
Keeps track of whether we should delete the timer queue (if we didn't create it, then we don't delete it). |
|
The mutual exclusion mechanism that is required to use the <condition_>. |
|
Thread id of our active object task.
|
|
The underlying Timer_Queue.
|