int User_Input_Task::clear_all_timers (void) { // loop through the timers in the queue, cancelling each one for (ACE_Timer_Node_T <ACE_Event_Handler *> *node; (node = queue_->timer_queue ()->get_first ()) != 0; ) queue_->timer_queue ()->cancel (node->get_timer_id (), 0, 0); return 0; }
ACE_Timer_Node_T<TYPE>* ACE_Timer_List_T<TYPE, FUNCTOR, ACE_LOCK>::find_node (long timer_id) const { ACE_Timer_Node_T<TYPE>* n = this->get_first_i(); if (n == 0) return 0; for (; n != this->head_; n = n->get_next()) { if (n->get_timer_id() == timer_id) { return n; } } return 0; }
int BPR_Handler_Base::clear_all_timers (void *) { // Loop through the timers in the queue, cancelling each one. for (ACE_Timer_Node_T <ACE_Event_Handler *> *node; (node = queue_.timer_queue ()->get_first ()) != 0; ) queue_.timer_queue ()->cancel (node->get_timer_id (), 0, 0); // queue_.cancel (node->get_timer_id (), 0); // Invoke the handler's (virtual) destructor delete this; return 0; }
template <class TYPE, class FUNCTOR, class ACE_LOCK, class BUCKET> int ACE_Timer_Hash_T<TYPE, FUNCTOR, ACE_LOCK, BUCKET>::expire (const ACE_Time_Value &cur_time) { ACE_TRACE ("ACE_Timer_Hash_T::expire"); ACE_MT (ACE_GUARD_RETURN (ACE_LOCK, ace_mon, this->mutex_, -1)); int number_of_timers_expired = 0; ACE_Timer_Node_T<TYPE> *expired; // Go through the table and expire anything that can be expired for (size_t i = 0; i < this->table_size_; i++) { while (!this->table_[i]->is_empty () && this->table_[i]->earliest_time () <= cur_time) { expired = this->table_[i]->get_first (); TYPE type = expired->get_type (); const void *act = expired->get_act (); int reclaim = 1; // Check if this is an interval timer. if (expired->get_interval () > ACE_Time_Value::zero) { // Make sure that we skip past values that have already // "expired". do expired->set_timer_value (expired->get_timer_value () + expired->get_interval ()); while (expired->get_timer_value () <= cur_time); // Since this is an interval timer, we need to // reschedule it. this->reschedule (expired); reclaim = 0; } // Now remove the timer from the original table... if // it's a simple, non-recurring timer, it's got to be // removed anyway. If it was rescheduled, it's been // scheduled into the correct table (regardless of whether // it's the same one or not) already. this->table_[i]->cancel (expired->get_timer_id ()); Hash_Token *h = ACE_reinterpret_cast (Hash_Token *, ACE_const_cast (void *, act)); // Call the functor. this->upcall (type, h->act_, cur_time); if (reclaim) { --this->size_; delete h; } number_of_timers_expired++; } } return number_of_timers_expired; }