vector<TimerEvent*> Timer::GetExpiredTimerEvent(const Timestamp& now_ts) { LOG_VERBOSE << "us:" << now_ts.GetTimeUs() << endl; vector<TimerEvent*> expired_events; PrintWaitEvent(); auto iter = wait_event_.lower_bound(now_ts.GetTimeUs()); auto it = wait_event_.begin(); while (it != iter) { auto timer_it = id_timer_map_.find(it->second); if (timer_it != id_timer_map_.end()) { expired_events.push_back(timer_it->second.get()); } else { LOG_VERBOSE << "timer id:" << it->second << " has been canceled" << endl; } it = wait_event_.erase(it); LOG_VERBOSE << "some timer event happend" << endl; } return expired_events; }