26 typedef std::multimap< uint64_t, std::pair<T, Id> > TimerMap;
27 typedef HashMap<Id, uint64_t> IdToTimer;
39 typename IdToTimer::iterator j = mIdToTimer.find(
id);
40 if (j == mIdToTimer.end())
45 for (
typename TimerMap::iterator i = mTimerMap.lower_bound(j->second); i != mTimerMap.upper_bound(j->second); i++)
47 if (i->second.second ==
id)
66 if (mTimerMap.empty())
86 return (!mTimerMap.empty() &&
96 typename TimerMap::iterator it = mTimerMap.begin();
97 mIdToTimer.erase(it->second.second);
99 T msg = it->second.first;
115 return mTimerMap.empty();
120 return mTimerMap.size();
128 mTimerMap.insert(std::make_pair(expiry, std::make_pair(msg,
id)));
129 mIdToTimer[id] = expiry;
137 if (mNextId == INT_MAX)
145 IdToTimer mIdToTimer;