Adapts an ACE timer queue to be driven asynchronously using signals. More...
#include <Timer_Queue_Adapters.h>


Public Types | |
| typedef TQ | TIMER_QUEUE |
Public Member Functions | |
| ACE_Async_Timer_Queue_Adapter (ACE_Sig_Set *mask=0) | |
| Constructor. | |
| long | schedule (TYPE 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) |
| Return a reference to 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. | |
Adapts an ACE timer queue to be driven asynchronously using signals.
This implementation uses the ACE_OS::ualarm call, to generate the SIGARLM signal that is caught by this class.
| typedef TQ ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::TIMER_QUEUE |
| ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::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.
| int ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::cancel | ( | long | timer_id, |
| const void ** | act = 0 |
||
| ) |
Cancel the timer_id and pass back the act if an address is passed in.
| int ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::expire | ( | void | ) |
Dispatch all timers with expiry time at or before the current time. Returns the number of timers expired.
| int ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::handle_signal | ( | int | signum, |
| siginfo_t * | , | ||
| ucontext_t * | |||
| ) | [private, virtual] |
Called back by SIGALRM handler.
Reimplemented from ACE_Event_Handler.
| long ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::schedule | ( | TYPE | type, |
| 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 ACE_Timer_List. This timer gets dispatched via a signal, rather than by a user calling expire(). Note that interval timers are not implemented yet.
| int ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::schedule_ualarm | ( | void | ) | [private, virtual] |
Perform the logic to compute the new ualarm(2) setting.
| TQ & ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::timer_queue | ( | void | ) |
Return a reference to the underlying timer queue.
ACE_Sig_Set ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::mask_ [private] |
Mask of signals to be blocked when we're servicing SIGALRM.
ACE_Sig_Handler ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::sig_handler_ [private] |
Handler for the SIGALRM signal, so that we can access our state without requiring any global variables.
TQ ACE_Async_Timer_Queue_Adapter< TQ, TYPE >::timer_queue_ [private] |
Implementation of the timer queue (e.g., ACE_Timer_List, ACE_Timer_Heap, etc.).
1.7.2