|
reSIProcate/stack
9694
|
#include <CancelableTimerQueue.hxx>
Public Types | |
| typedef long | Id |
Public Member Functions | |
| CancelableTimerQueue () | |
| ~CancelableTimerQueue () | |
| Id | addRelative (T msg, unsigned int offset) |
| bool | cancel (Id id) |
| int | getTimeout () const |
| bool | available () const |
| T | getNext () |
| void | clear () |
| bool | empty () const |
| size_t | size () const |
Private Types | |
| typedef std::multimap< UInt64, std::pair< T, Id > > | TimerMap |
| typedef HashMap< Id, UInt64 > | IdToTimer |
Private Member Functions | |
| Id | addTimer (T msg, UInt64 expiry) |
| Id | getNextId () |
Private Attributes | |
| Id | mNextId |
| IdToTimer | mIdToTimer |
| TimerMap | mTimerMap |
Definition at line 18 of file CancelableTimerQueue.hxx.
| typedef long resip::CancelableTimerQueue< T >::Id |
Definition at line 22 of file CancelableTimerQueue.hxx.
typedef HashMap<Id, UInt64> resip::CancelableTimerQueue< T >::IdToTimer [private] |
Definition at line 27 of file CancelableTimerQueue.hxx.
typedef std::multimap< UInt64, std::pair<T, Id> > resip::CancelableTimerQueue< T >::TimerMap [private] |
Definition at line 26 of file CancelableTimerQueue.hxx.
| resip::CancelableTimerQueue< T >::CancelableTimerQueue | ( | ) | [inline] |
Definition at line 21 of file CancelableTimerQueue.hxx.
: mNextId(0) {};
| resip::CancelableTimerQueue< T >::~CancelableTimerQueue | ( | ) | [inline] |
Definition at line 22 of file CancelableTimerQueue.hxx.
{};
| Id resip::CancelableTimerQueue< T >::addRelative | ( | T | msg, |
| unsigned int | offset | ||
| ) | [inline] |
Definition at line 30 of file CancelableTimerQueue.hxx.
References resip::Timer::getTimeMs().
{
return addTimer(msg, resip::Timer::getTimeMs() + offset);
}

| Id resip::CancelableTimerQueue< T >::addTimer | ( | T | msg, |
| UInt64 | expiry | ||
| ) | [inline, private] |
Definition at line 123 of file CancelableTimerQueue.hxx.
{
Id id = getNextId();
mTimerMap.insert(std::make_pair(expiry, std::make_pair(msg, id)));
mIdToTimer[id] = expiry;
assert(mIdToTimer.size() == mTimerMap.size());
return id;
}
| bool resip::CancelableTimerQueue< T >::available | ( | ) | const [inline] |
Definition at line 82 of file CancelableTimerQueue.hxx.
References resip::Timer::getTimeMs().
{
return (!mTimerMap.empty() &&
mTimerMap.begin()->first <= resip::Timer::getTimeMs());
}

| bool resip::CancelableTimerQueue< T >::cancel | ( | Id | id | ) | [inline] |
Definition at line 37 of file CancelableTimerQueue.hxx.
{
typename IdToTimer::iterator j = mIdToTimer.find(id);
if (j == mIdToTimer.end())
{
return false;
}
for (typename TimerMap::iterator i = mTimerMap.lower_bound(j->second); i != mTimerMap.upper_bound(j->second); i++)
{
if (i->second.second == id)
{
mTimerMap.erase(i);
mIdToTimer.erase(j);
return true;
}
}
//cerr << "mIdToTimer: " << Inserter(mIdToTimer) << endl;
//cerr << "Searching for ID: " << id << endl;
//cerr << "TimerMap state: " << Inserter(mTimerMap) << endl;
assert(mIdToTimer.size() == mTimerMap.size());
assert(0);
}
| void resip::CancelableTimerQueue< T >::clear | ( | void | ) | [inline] |
Definition at line 105 of file CancelableTimerQueue.hxx.
{
mTimerMap.clear();
mIdToTimer.clear();
}
| bool resip::CancelableTimerQueue< T >::empty | ( | ) | const [inline] |
Definition at line 111 of file CancelableTimerQueue.hxx.
{
return mTimerMap.empty();
}
| T resip::CancelableTimerQueue< T >::getNext | ( | ) | [inline] |
Definition at line 88 of file CancelableTimerQueue.hxx.
{
assert(mIdToTimer.size() == mTimerMap.size());
assert(available());
typename TimerMap::iterator it = mTimerMap.begin();
mIdToTimer.erase(it->second.second);
T msg = it->second.first;
mTimerMap.erase(it);
assert(mIdToTimer.size() == mTimerMap.size());
return msg;
}
| Id resip::CancelableTimerQueue< T >::getNextId | ( | ) | [inline, private] |
| int resip::CancelableTimerQueue< T >::getTimeout | ( | ) | const [inline] |
Definition at line 63 of file CancelableTimerQueue.hxx.
References resip::Timer::getTimeMs().
{
if (mTimerMap.empty())
{
return -1;
}
else
{
if (mTimerMap.begin()->first - resip::Timer::getTimeMs() < 0)
{
return 0;
}
else
{
return mTimerMap.begin()->first - resip::Timer::getTimeMs();
}
}
}

| size_t resip::CancelableTimerQueue< T >::size | ( | ) | const [inline] |
Definition at line 116 of file CancelableTimerQueue.hxx.
{
return mTimerMap.size();
}
IdToTimer resip::CancelableTimerQueue< T >::mIdToTimer [private] |
Definition at line 143 of file CancelableTimerQueue.hxx.
Id resip::CancelableTimerQueue< T >::mNextId [private] |
Definition at line 142 of file CancelableTimerQueue.hxx.
TimerMap resip::CancelableTimerQueue< T >::mTimerMap [private] |
Definition at line 144 of file CancelableTimerQueue.hxx.
1.7.5.1