#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_ |
This class implements the functor required by the Timer Queue to call on ACE_Event_Handlers.
Definition at line 475 of file Timer_Queue_T.h.
|
|||||
|
Definition at line 481 of file Timer_Queue_T.h. |
|
||||||||||
|
Constructor.
Definition at line 340 of file Timer_Queue_T.cpp.
00341 {
00342 }
|
|
||||||||||
|
Destructor.
Definition at line 345 of file Timer_Queue_T.cpp.
00346 {
00347 }
|
|
||||||||||
|
|
|
||||||||||||||||||||||||
|
This method is called when a timer is cancelled.
Definition at line 449 of file Timer_Queue_T.cpp. References ACE_Event_Handler::remove_reference(). Referenced by ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::deletion().
00453 {
00454 if (requires_reference_counting)
00455 event_handler->remove_reference ();
00456
00457 return 0;
00458 }
|
|
||||||||||||||||||||||||
|
This method is called when a handler is cancelled.
Definition at line 431 of file Timer_Queue_T.cpp. References ACE_Event_Handler::handle_close(), and ACE_Event_Handler::reference_counting_policy(). Referenced by ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::deletion().
00435 {
00436 requires_reference_counting =
00437 event_handler->reference_counting_policy ().value () ==
00438 ACE_Event_Handler::Reference_Counting_Policy::ENABLED;
00439
00440 // Upcall to the <handler>s handle_close method
00441 if (dont_call == 0)
00442 event_handler->handle_close (ACE_INVALID_HANDLE,
00443 ACE_Event_Handler::TIMER_MASK);
00444
00445 return 0;
00446 }
|
|
||||||||||||||||||||
|
This method is called when the timer queue is destroyed and the timer is still contained in it Definition at line 461 of file Timer_Queue_T.cpp. References ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::cancel_timer(), and ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::cancel_type().
00464 {
00465 int requires_reference_counting = 0;
00466
00467 this->cancel_type (timer_queue,
00468 event_handler,
00469 0,
00470 requires_reference_counting);
00471
00472 this->cancel_timer (timer_queue,
00473 event_handler,
00474 0,
00475 requires_reference_counting);
00476
00477 return 0;
00478 }
|
|
||||||||||
|
|
|
||||||||||||||||||||||||||||||||
|
This method is called after the timer expires.
Definition at line 381 of file Timer_Queue_T.cpp. References ACE_Event_Handler::remove_reference(), and ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::requires_reference_counting_.
00387 {
00388 if (upcall_act == &this->requires_reference_counting_)
00389 {
00390 event_handler->remove_reference ();
00391 }
00392
00393 return 0;
00394 }
|
|
||||||||||||||||||||||||||||||||
|
This method is called before the timer expires.
Definition at line 359 of file Timer_Queue_T.cpp. References ACE_Event_Handler::add_reference(), ACE_Event_Handler::reference_counting_policy(), and ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::requires_reference_counting_.
00365 {
00366 bool const requires_reference_counting =
00367 event_handler->reference_counting_policy ().value () ==
00368 ACE_Event_Handler::Reference_Counting_Policy::ENABLED;
00369
00370 if (requires_reference_counting)
00371 {
00372 event_handler->add_reference ();
00373
00374 upcall_act = &this->requires_reference_counting_;
00375 }
00376
00377 return 0;
00378 }
|
|
||||||||||||||||||||
|
This method is called when a timer is registered.
Definition at line 350 of file Timer_Queue_T.cpp. References ACE_Event_Handler::add_reference().
00353 {
00354 event_handler->add_reference ();
00355 return 0;
00356 }
|
|
||||||||||||||||||||||||||||
|
This method is called when the timer expires.
Definition at line 397 of file Timer_Queue_T.cpp. References ACE_Reactor_Timer_Interface::cancel_timer(), ACE_Event_Handler::handle_timeout(), ACE_Event_Handler::reactor_timer_interface(), ACE_Event_Handler::reference_counting_policy(), and ACE_Event_Handler::remove_reference().
00402 {
00403 int requires_reference_counting = 0;
00404
00405 if (!recurring_timer)
00406 {
00407 requires_reference_counting =
00408 event_handler->reference_counting_policy ().value () ==
00409 ACE_Event_Handler::Reference_Counting_Policy::ENABLED;
00410 }
00411
00412 // Upcall to the <handler>s handle_timeout method.
00413 if (event_handler->handle_timeout (cur_time, act) == -1)
00414 {
00415 if (event_handler->reactor_timer_interface ())
00416 event_handler->reactor_timer_interface ()->cancel_timer (event_handler, 0);
00417 else
00418 timer_queue.cancel (event_handler, 0); // 0 means "call handle_close()".
00419 }
00420
00421 if (!recurring_timer &&
00422 requires_reference_counting)
00423 {
00424 event_handler->remove_reference ();
00425 }
00426
00427 return 0;
00428 }
|
|
|||||
|
Flag indicating that reference counting is required for this event handler upcall. Definition at line 540 of file Timer_Queue_T.h. Referenced by ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::postinvoke(), and ACE_Event_Handler_Handle_Timeout_Upcall< ACE_LOCK >::preinvoke(). |
1.3.6