Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

ACE_Async_Timer_Queue_Adapter< TQ > Class Template Reference

Adapts a <tq> to be run asynchronously. More...

#include <Timer_Queue_Adapters.h>

Inheritance diagram for ACE_Async_Timer_Queue_Adapter< TQ >:

Inheritance graph
[legend]
Collaboration diagram for ACE_Async_Timer_Queue_Adapter< TQ >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef TQ TIMER_QUEUE

Public Member Functions

 ACE_Async_Timer_Queue_Adapter (ACE_Sig_Set *mask=0)
 Constructor.
long schedule (ACE_Event_Handler *type, 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)
int expire (void)
TQ & timer_queue (void)
 Access the underlying <timer_queue>.

Private Member Functions

virtual int schedule_ualarm (void)
 Perform the logic to compute the new ualarm(2) setting.
virtual int handle_signal (int signum, siginfo_t *, ucontext_t *)
 Called back by <sigalrm> handler.

Private Attributes

ACE_Sig_Handler sig_handler_
TQ timer_queue_
ACE_Sig_Set mask_
 Mask of signals to be blocked when we're servicing <sigalrm>.

Detailed Description

template<class TQ>
class ACE_Async_Timer_Queue_Adapter< TQ >

Adapts a <tq> to be run asynchronously.

This implementation uses the <ualarm> call, which generates the SIGARLM signal that is caught by this class.


Member Typedef Documentation

template<class TQ>
typedef TQ ACE_Async_Timer_Queue_Adapter< TQ >::TIMER_QUEUE
 


Constructor & Destructor Documentation

template<class TQ>
ACE_Async_Timer_Queue_Adapter< TQ >::ACE_Async_Timer_Queue_Adapter ACE_Sig_Set mask = 0  ) 
 

Constructor.

Register the SIGALRM handler. If mask == 0 then block all signals when <sigalrm> is run. Otherwise, just block the signals indicated in mask.


Member Function Documentation

template<class TQ>
int ACE_Async_Timer_Queue_Adapter< TQ >::cancel long  timer_id,
const void **  act = 0
 

Cancel the timer_id and pass back the act if an address is passed in.

template<class TQ>
int ACE_Async_Timer_Queue_Adapter< TQ >::expire void   ) 
 

Dispatch all timers whose values are <= <cur_time>. Returns the number of timers canceled.

template<class TQ>
int ACE_Async_Timer_Queue_Adapter< TQ >::handle_signal int  signum,
siginfo_t ,
ucontext_t
[private, virtual]
 

Called back by <sigalrm> handler.

Reimplemented from ACE_Event_Handler.

template<class TQ>
long ACE_Async_Timer_Queue_Adapter< TQ >::schedule ACE_Event_Handler type,
const void *  act,
const ACE_Time_Value future_time,
const ACE_Time_Value interval = ACE_Time_Value::zero
 

This timer gets dispatched via a signal, rather than by a user calling expire(). Note that interval timers are not implemented yet.

template<class TQ>
int ACE_Async_Timer_Queue_Adapter< TQ >::schedule_ualarm void   )  [private, virtual]
 

Perform the logic to compute the new ualarm(2) setting.

template<class TQ>
ACE_BEGIN_VERSIONED_NAMESPACE_DECL TQ & ACE_Async_Timer_Queue_Adapter< TQ >::timer_queue void   ) 
 

Access the underlying <timer_queue>.


Member Data Documentation

template<class TQ>
ACE_Sig_Set ACE_Async_Timer_Queue_Adapter< TQ >::mask_ [private]
 

Mask of signals to be blocked when we're servicing <sigalrm>.

template<class TQ>
ACE_Sig_Handler ACE_Async_Timer_Queue_Adapter< TQ >::sig_handler_ [private]
 

Handler for the <sigalrm> signal, so that we can access our state without requiring any global variables.

template<class TQ>
TQ ACE_Async_Timer_Queue_Adapter< TQ >::timer_queue_ [private]
 

Implementation of the timer queue (e.g., <ace_timer_list>, <ace_timer_heap>, etc.).


The documentation for this class was generated from the following files:
Generated on Thu Feb 16 03:40:07 2006 for ACE by  doxygen 1.3.9.1