|
reSIProcate/stack
9694
|
#include <iostream>#include "resip/stack/TransactionMessage.hxx"#include "resip/stack/TimerQueue.hxx"#include "resip/stack/TuSelector.hxx"#include "rutil/Fifo.hxx"#include "rutil/TimeLimitFifo.hxx"#include <unistd.h>
Go to the source code of this file.
Functions | |
| bool | isNear (int value, int reference, int epsilon=250) |
| int | main () |
| bool isNear | ( | int | value, |
| int | reference, | ||
| int | epsilon = 250 |
||
| ) |
Definition at line 22 of file testTimer.cxx.
{
int diff = ::abs(value-reference);
return (diff < epsilon);
}
| int main | ( | void | ) |
Definition at line 30 of file testTimer.cxx.
References resip::TransactionTimerQueue::add(), isNear(), resip::TimerQueue< T >::msTillNextTimer(), resip::TimerQueue< T >::process(), resip::AbstractFifo< T >::size(), and resip::Timer::TimerA.
{
TimeLimitFifo<Message> f(0, 0);
Fifo<TimerMessage> r;
TransactionTimerQueue timer(r);
TimeLimitTimerQueue timer2(f);
cerr << "Before Fifo size: " << f.size() << endl;
assert(f.size() == 0);
cerr << "next timer = " << timer.msTillNextTimer() << endl;
assert(timer.msTillNextTimer() == INT_MAX);
// throw a few events in the queue
timer.add(Timer::TimerA, "first", 1000);
cerr << "next timer will fire in " << timer.msTillNextTimer() << "ms" << endl;
assert(isNear(timer.msTillNextTimer(), 1000));
timer.add(Timer::TimerA, "second", 2000);
assert(isNear(timer.msTillNextTimer(), 1000));
timer.add(Timer::TimerA, "third", 4000);
assert(isNear(timer.msTillNextTimer(), 1000));
timer.add(Timer::TimerA, "fourth", 8000);
assert(isNear(timer.msTillNextTimer(), 1000));
timer.add(Timer::TimerA, "fifth", 16000);
assert(isNear(timer.msTillNextTimer(), 1000));
cerr << timer;
assert(r.size() == 0);
assert(timer.size() == 5);
timer.process();
assert(r.size() == 0);
assert(timer.size() == 5);
cerr << timer;
sleep(1);
cerr << timer;
timer.process();
cerr << timer;
assert(r.size() == 1);
assert(timer.size() == 4);
cerr << "next timer will fire in " << timer.msTillNextTimer() << "ms" << endl;
timer.process();
cerr << "next timer will fire in " << timer.msTillNextTimer() << "ms" << endl;
cerr << "timer queue size=" << timer.size() << endl;
cerr << "fired event queue size=" << r.size() << endl;
assert(r.size() == 1);
timer.process();
assert(r.size() == 1);
sleep(1);
timer.process();
assert(r.size() == 2);
timer.process();
assert(r.size() == 2);
sleep(2);
timer.process();
assert(r.size() == 3);
timer.process();
assert(r.size() == 3);
sleep(4);
timer.process();
assert(r.size() == 4);
timer.process();
assert(r.size() == 4);
cerr << "next timer will fire in " << timer.msTillNextTimer() << "ms" << endl;
assert(isNear(timer.msTillNextTimer(), 8000));
sleep(8);
timer.process();
cerr << timer;
assert(r.size() == 5);
timer.process();
assert(r.size() == 5);
sleep(1);
timer.process();
assert(r.size() == 5);
timer.process();
assert(r.size() == 5);
cerr << "All OK" << endl;
return 0;
}

1.7.5.1