ACE  6.0.6
Public Types | Public Member Functions | Private Attributes
ACE_Thread_Timer_Queue_Adapter Class Reference

Adapts an ACE timer queue using a separate thread for dispatching. More...

#include <Timer_Queue_Adapters.h>

Inheritance diagram for ACE_Thread_Timer_Queue_Adapter:
Inheritance graph
Collaboration diagram for ACE_Thread_Timer_Queue_Adapter:
Collaboration graph

List of all members.

Public Types

 Trait for the underlying queue type.

Public Member Functions

 ACE_Thread_Timer_Queue_Adapter (ACE_Thread_Manager *=ACE_Thread_Manager::instance(), TQ *timer_queue=0)
virtual ~ACE_Thread_Timer_Queue_Adapter (void)
long schedule (TYPE 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.
 Access the locking mechanism, useful for iteration.
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_ids[]=0, const char *thr_name[]=0)

Private Attributes

TQ * timer_queue_
 The underlying Timer_Queue.
bool delete_timer_queue_
bool active_
ACE_thread_t thr_id_
 Thread id of our active object task.

Detailed Description

Adapts an ACE timer queue using a separate thread for dispatching.

This implementation uses a separate thread to dispatch the timers. The base queue need not be thread safe; this class takes all the necessary locks.

This is a case where template parameters will be useful, but (IMHO) the effort and portability problems discourage their use.

Member Typedef Documentation

Trait for the underlying queue type.

Constructor & Destructor Documentation

ACE_Thread_Timer_Queue_Adapter::ACE_Thread_Timer_Queue_Adapter ( ACE_Thread_Manager tm = ACE_Thread_Manager::instance (),
TQ *  timer_queue = 0 

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

ACE_Thread_Timer_Queue_Adapter::~ACE_Thread_Timer_Queue_Adapter ( void  ) [virtual]


Member Function Documentation

int ACE_Thread_Timer_Queue_Adapter::activate ( long  flags = THR_NEW_LWP | THR_JOINABLE,
int  n_threads = 1,
int  force_active = 0,
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_ids[] = 0,
const char *  thr_name[] = 0 
) [virtual]

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.

int ACE_Thread_Timer_Queue_Adapter::cancel ( long  timer_id,
const void **  act = 0 

Cancel the timer_id and return the act parameter if an address is passed in. Also wakes up the dispatching thread.

void ACE_Thread_Timer_Queue_Adapter::deactivate ( void  ) [virtual]

Inform the dispatching thread that it should terminate.

ACE_SYNCH_RECURSIVE_MUTEX & ACE_Thread_Timer_Queue_Adapter::mutex ( void  )

Access the locking mechanism, useful for iteration.

long ACE_Thread_Timer_Queue_Adapter::schedule ( TYPE  handler,
const void *  act,
const ACE_Time_Value future_time,
const ACE_Time_Value interval = ACE_Time_Value::zero 

Schedule the timer according to the semantics of the <TQ>; wakes up the dispatching thread.

int ACE_Thread_Timer_Queue_Adapter::svc ( void  ) [virtual]

Runs the dispatching thread.

Reimplemented from ACE_Task_Base.

ACE_thread_t ACE_Thread_Timer_Queue_Adapter::thr_id ( void  ) const [inline]

Return the thread id of our active object.

int ACE_Thread_Timer_Queue_Adapter::timer_queue ( TQ *  tq) [inline]

Set a user-specified timer queue.

TQ * ACE_Thread_Timer_Queue_Adapter::timer_queue ( void  ) const [inline]

Return the current <TQ>.

Member Data Documentation

When deactivate is called this variable turns to false and the dispatching thread is signalled, to terminate its main loop.

ACE_SYNCH_RECURSIVE_CONDITION ACE_Thread_Timer_Queue_Adapter::condition_ [private]

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).

ACE_SYNCH_RECURSIVE_MUTEX ACE_Thread_Timer_Queue_Adapter::mutex_ [private]

The mutual exclusion mechanism that is required to use the <condition_>.

Thread id of our active object task.

The underlying Timer_Queue.

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines