Functor for Timer_Queues. More...
#include <Timer_Queue_T.h>
Public Types | |
typedef ACE_Timer_Queue_T < ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall < ACE_LOCK >, ACE_LOCK > | TIMER_QUEUE |
Public Member Functions | |
ACE_Event_Handler_Handle_Timeout_Upcall (void) | |
Constructor. | |
~ACE_Event_Handler_Handle_Timeout_Upcall (void) | |
Destructor. | |
int | registration (TIMER_QUEUE &timer_queue, ACE_Event_Handler *handler, const void *arg) |
This method is called when a timer is registered. | |
int | preinvoke (TIMER_QUEUE &timer_queue, ACE_Event_Handler *handler, const void *arg, int recurring_timer, const ACE_Time_Value &cur_time, const void *&upcall_act) |
This method is called before the timer expires. | |
int | timeout (TIMER_QUEUE &timer_queue, ACE_Event_Handler *handler, const void *arg, int recurring_timer, const ACE_Time_Value &cur_time) |
This method is called when the timer expires. | |
int | postinvoke (TIMER_QUEUE &timer_queue, ACE_Event_Handler *handler, const void *arg, int recurring_timer, const ACE_Time_Value &cur_time, const void *upcall_act) |
This method is called after the timer expires. | |
int | cancel_type (TIMER_QUEUE &timer_queue, ACE_Event_Handler *handler, int dont_call, int &requires_reference_counting) |
This method is called when a handler is cancelled. | |
int | cancel_timer (TIMER_QUEUE &timer_queue, ACE_Event_Handler *handler, int dont_call, int requires_reference_counting) |
This method is called when a timer is cancelled. | |
int | deletion (TIMER_QUEUE &timer_queue, ACE_Event_Handler *handler, const void *arg) |
Private Member Functions | |
ACE_Event_Handler_Handle_Timeout_Upcall (const ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK > &) | |
void | operator= (const ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK > &) |
Private Attributes | |
int | requires_reference_counting_ |
Functor for Timer_Queues.
This class implements the functor required by the Timer Queue to call <handle_timeout> on ACE_Event_Handlers.
Definition at line 479 of file Timer_Queue_T.h.
typedef ACE_Timer_Queue_T<ACE_Event_Handler *, ACE_Event_Handler_Handle_Timeout_Upcall<ACE_LOCK>, ACE_LOCK> ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::TIMER_QUEUE |
Definition at line 485 of file Timer_Queue_T.h.
ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::ACE_Event_Handler_Handle_Timeout_Upcall | ( | void | ) |
ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::~ACE_Event_Handler_Handle_Timeout_Upcall | ( | void | ) |
ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::ACE_Event_Handler_Handle_Timeout_Upcall | ( | const ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK > & | ) | [private] |
int ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::cancel_timer | ( | TIMER_QUEUE & | timer_queue, | |
ACE_Event_Handler * | handler, | |||
int | dont_call, | |||
int | requires_reference_counting | |||
) |
This method is called when a timer is cancelled.
Definition at line 505 of file Timer_Queue_T.cpp.
{ if (requires_reference_counting) event_handler->remove_reference (); return 0; }
int ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::cancel_type | ( | TIMER_QUEUE & | timer_queue, | |
ACE_Event_Handler * | handler, | |||
int | dont_call, | |||
int & | requires_reference_counting | |||
) |
This method is called when a handler is cancelled.
Definition at line 487 of file Timer_Queue_T.cpp.
{ requires_reference_counting = event_handler->reference_counting_policy ().value () == ACE_Event_Handler::Reference_Counting_Policy::ENABLED; // Upcall to the <handler>s handle_close method if (dont_call == 0) event_handler->handle_close (ACE_INVALID_HANDLE, ACE_Event_Handler::TIMER_MASK); return 0; }
int ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::deletion | ( | TIMER_QUEUE & | timer_queue, | |
ACE_Event_Handler * | handler, | |||
const void * | arg | |||
) |
This method is called when the timer queue is destroyed and the timer is still contained in it
Definition at line 517 of file Timer_Queue_T.cpp.
{ int requires_reference_counting = 0; this->cancel_type (timer_queue, event_handler, 0, requires_reference_counting); this->cancel_timer (timer_queue, event_handler, 0, requires_reference_counting); return 0; }
void ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::operator= | ( | const ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK > & | ) | [private] |
int ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::postinvoke | ( | TIMER_QUEUE & | timer_queue, | |
ACE_Event_Handler * | handler, | |||
const void * | arg, | |||
int | recurring_timer, | |||
const ACE_Time_Value & | cur_time, | |||
const void * | upcall_act | |||
) |
This method is called after the timer expires.
Definition at line 437 of file Timer_Queue_T.cpp.
{ if (upcall_act == &this->requires_reference_counting_) { event_handler->remove_reference (); } return 0; }
int ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::preinvoke | ( | TIMER_QUEUE & | timer_queue, | |
ACE_Event_Handler * | handler, | |||
const void * | arg, | |||
int | recurring_timer, | |||
const ACE_Time_Value & | cur_time, | |||
const void *& | upcall_act | |||
) |
This method is called before the timer expires.
Definition at line 415 of file Timer_Queue_T.cpp.
{ bool const requires_reference_counting = event_handler->reference_counting_policy ().value () == ACE_Event_Handler::Reference_Counting_Policy::ENABLED; if (requires_reference_counting) { event_handler->add_reference (); upcall_act = &this->requires_reference_counting_; } return 0; }
int ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::registration | ( | TIMER_QUEUE & | timer_queue, | |
ACE_Event_Handler * | handler, | |||
const void * | arg | |||
) |
This method is called when a timer is registered.
Definition at line 406 of file Timer_Queue_T.cpp.
{
event_handler->add_reference ();
return 0;
}
int ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::timeout | ( | TIMER_QUEUE & | timer_queue, | |
ACE_Event_Handler * | handler, | |||
const void * | arg, | |||
int | recurring_timer, | |||
const ACE_Time_Value & | cur_time | |||
) |
This method is called when the timer expires.
Definition at line 453 of file Timer_Queue_T.cpp.
{ int requires_reference_counting = 0; if (!recurring_timer) { requires_reference_counting = event_handler->reference_counting_policy ().value () == ACE_Event_Handler::Reference_Counting_Policy::ENABLED; } // Upcall to the <handler>s handle_timeout method. if (event_handler->handle_timeout (cur_time, act) == -1) { if (event_handler->reactor_timer_interface ()) event_handler->reactor_timer_interface ()->cancel_timer (event_handler, 0); else timer_queue.cancel (event_handler, 0); // 0 means "call handle_close()". } if (!recurring_timer && requires_reference_counting) { event_handler->remove_reference (); } return 0; }
int ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::requires_reference_counting_ [private] |
Flag indicating that reference counting is required for this event handler upcall.
Definition at line 544 of file Timer_Queue_T.h.