diff --git a/core/plug-in/session_timer/UserTimer.cpp b/core/plug-in/session_timer/UserTimer.cpp index 22778da1..b78b97c9 100644 --- a/core/plug-in/session_timer/UserTimer.cpp +++ b/core/plug-in/session_timer/UserTimer.cpp @@ -69,11 +69,6 @@ bool operator < (const AmTimer& l, const AmTimer& r) return timercmp(&l.time,&r.time,<); } -bool operator == (const AmTimer& l, const AmTimer& r) -{ - return l.id == r.id; -} - void UserTimer::checkTimers() { timers_mut.lock(); if(timers.empty()){ @@ -84,7 +79,7 @@ void UserTimer::checkTimers() { struct timeval cur_time; gettimeofday(&cur_time,NULL); - std::set::iterator it = timers.begin(); + std::multiset::iterator it = timers.begin(); while( timercmp(&it->time,&cur_time,<) || timercmp(&it->time,&cur_time,==) ){ @@ -139,7 +134,7 @@ void UserTimer::removeTimer(int id, const string& session_id) { void UserTimer::unsafe_removeTimer(int id, const string& session_id) { // erase old timer if exists - std::set::iterator it = timers.begin(); + std::multiset::iterator it = timers.begin(); while (it != timers.end()) { if ((it->id == id)&&(it->session_id == session_id)) { timers.erase(it); @@ -152,10 +147,10 @@ void UserTimer::unsafe_removeTimer(int id, const string& session_id) void UserTimer::removeTimers(const string& session_id) { // DBG("removing timers for <%s>\n", session_id.c_str()); timers_mut.lock(); - std::set::iterator it = timers.begin(); + std::multiset::iterator it = timers.begin(); while (it != timers.end()) { if (it->session_id == session_id) { - std::set::iterator d_it = it; + std::multiset::iterator d_it = it; it++; timers.erase(d_it); // DBG(" o timer removed.\n"); @@ -169,10 +164,10 @@ void UserTimer::removeTimers(const string& session_id) { void UserTimer::removeUserTimers(const string& session_id) { // DBG("removing User timers for <%s>\n", session_id.c_str()); timers_mut.lock(); - std::set::iterator it = timers.begin(); + std::multiset::iterator it = timers.begin(); while (it != timers.end()) { if ((it->id > 0)&&(it->session_id == session_id)) { - std::set::iterator d_it = it; + std::multiset::iterator d_it = it; it++; timers.erase(d_it); // DBG(" o timer removed.\n"); diff --git a/core/plug-in/session_timer/UserTimer.h b/core/plug-in/session_timer/UserTimer.h index f73179f7..9a5d9803 100644 --- a/core/plug-in/session_timer/UserTimer.h +++ b/core/plug-in/session_timer/UserTimer.h @@ -50,7 +50,6 @@ struct AmTimer bool operator < (const AmTimer& l, const AmTimer& r); -bool operator == (const AmTimer& l, const AmTimer& r); /** * \brief user timer class. @@ -65,7 +64,7 @@ class UserTimer: public AmDynInvoke { static UserTimer* _instance; - std::set timers; + std::multiset timers; AmMutex timers_mut; void unsafe_removeTimer(int id, const string& session_id);