author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Thu, 25 Feb 2010 14:17:21 +0100 | |
changeset 6068 | a2127017ecb4 |
parent 5290 | e7a7e04cbe24 |
child 6180 | cd0d8ba00e6c |
permissions | -rw-r--r-- |
1695
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
2 |
/* |
1941
c4eb28d51689
split timer implementation outside of Timer class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1695
diff
changeset
|
3 |
* Copyright (c) 2007 INRIA |
1695
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
4 |
* |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
7 |
* published by the Free Software Foundation; |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
8 |
* |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
12 |
* GNU General Public License for more details. |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
13 |
* |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
17 |
* |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
18 |
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
fa84cc049e9c
add missing copyright
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1693
diff
changeset
|
19 |
*/ |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
20 |
#include "timer.h" |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
#include "simulator.h" |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
#include "simulation-singleton.h" |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
24 |
namespace ns3 { |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
25 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
26 |
Timer::Timer () |
4451
b1e16a025279
bug 568: Timer's default destroy policy not set.
Fabian Mauchle <f1mauchl@hsr.ch>
parents:
1972
diff
changeset
|
27 |
: m_flags (CHECK_ON_DESTROY), |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
m_delay (FemtoSeconds (0)), |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
m_event (), |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
30 |
m_impl (0) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
{} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
32 |
|
1708
b1ea1131c106
bug 87: do not export the garbage collection facility from the Timer class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1695
diff
changeset
|
33 |
Timer::Timer (enum DestroyPolicy destroyPolicy) |
b1ea1131c106
bug 87: do not export the garbage collection facility from the Timer class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1695
diff
changeset
|
34 |
: m_flags (destroyPolicy), |
1682
e99303d99e30
simplicy policy handling
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1681
diff
changeset
|
35 |
m_delay (FemtoSeconds (0)), |
e99303d99e30
simplicy policy handling
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1681
diff
changeset
|
36 |
m_event (), |
e99303d99e30
simplicy policy handling
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1681
diff
changeset
|
37 |
m_impl (0) |
e99303d99e30
simplicy policy handling
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1681
diff
changeset
|
38 |
{} |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
39 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
40 |
Timer::~Timer () |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
41 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
42 |
if (m_flags & CHECK_ON_DESTROY) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
44 |
if (m_event.IsRunning ()) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
46 |
NS_FATAL_ERROR ("Event is still running while destroying."); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
47 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
48 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
49 |
else if (m_flags & CANCEL_ON_DESTROY) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
50 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
51 |
m_event.Cancel (); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
52 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
53 |
else if (m_flags & REMOVE_ON_DESTROY) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
54 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
55 |
Simulator::Remove (m_event); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
56 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
57 |
delete m_impl; |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
58 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
59 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
60 |
void |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
61 |
Timer::SetDelay (const Time &time) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
62 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
63 |
m_delay = time; |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
64 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
65 |
Time |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
66 |
Timer::GetDelay (void) const |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
67 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
68 |
return m_delay; |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
69 |
} |
1693
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
70 |
Time |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
71 |
Timer::GetDelayLeft (void) const |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
72 |
{ |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
73 |
switch (GetState ()) { |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
74 |
case Timer::RUNNING: |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
75 |
return Simulator::GetDelayLeft (m_event); |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
76 |
break; |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
77 |
case Timer::EXPIRED: |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
78 |
return TimeStep (0); |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
79 |
break; |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
80 |
case Timer::SUSPENDED: |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
81 |
return m_delayLeft; |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
82 |
break; |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
83 |
default: |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
84 |
NS_ASSERT (false); |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
85 |
return TimeStep (0); |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
86 |
break; |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
87 |
} |
bf884d490040
add Timer::GetDelayLeft
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1692
diff
changeset
|
88 |
} |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
89 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
90 |
void |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
91 |
Timer::Cancel (void) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
92 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
93 |
Simulator::Cancel (m_event); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
94 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
95 |
void |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
96 |
Timer::Remove (void) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
97 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
98 |
Simulator::Remove (m_event); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
99 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
100 |
bool |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
101 |
Timer::IsExpired (void) const |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
102 |
{ |
1692
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
103 |
return !IsSuspended () && m_event.IsExpired (); |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
104 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
105 |
bool |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
106 |
Timer::IsRunning (void) const |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
107 |
{ |
1692
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
108 |
return !IsSuspended () && m_event.IsRunning (); |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
109 |
} |
1691
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
110 |
bool |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
111 |
Timer::IsSuspended (void) const |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
112 |
{ |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
113 |
return (m_flags & TIMER_SUSPENDED) == TIMER_SUSPENDED; |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
114 |
} |
1692
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
115 |
enum Timer::State |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
116 |
Timer::GetState (void) const |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
117 |
{ |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
118 |
if (IsRunning ()) |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
119 |
{ |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
120 |
return Timer::RUNNING; |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
121 |
} |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
122 |
else if (IsExpired ()) |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
123 |
{ |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
124 |
return Timer::EXPIRED; |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
125 |
} |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
126 |
else |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
127 |
{ |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
128 |
NS_ASSERT (IsSuspended ()); |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
129 |
return Timer::SUSPENDED; |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
130 |
} |
b35ba80cafef
make the timer a tristate object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1691
diff
changeset
|
131 |
} |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
132 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
133 |
void |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
134 |
Timer::Schedule (void) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
135 |
{ |
1688
96172e357b93
add a Timer::Schedule (delay) method
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1687
diff
changeset
|
136 |
Schedule (m_delay); |
96172e357b93
add a Timer::Schedule (delay) method
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1687
diff
changeset
|
137 |
} |
96172e357b93
add a Timer::Schedule (delay) method
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1687
diff
changeset
|
138 |
|
96172e357b93
add a Timer::Schedule (delay) method
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1687
diff
changeset
|
139 |
void |
96172e357b93
add a Timer::Schedule (delay) method
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1687
diff
changeset
|
140 |
Timer::Schedule (Time delay) |
96172e357b93
add a Timer::Schedule (delay) method
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1687
diff
changeset
|
141 |
{ |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
142 |
NS_ASSERT (m_impl != 0); |
1708
b1ea1131c106
bug 87: do not export the garbage collection facility from the Timer class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1695
diff
changeset
|
143 |
if (m_event.IsRunning ()) |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
144 |
{ |
1708
b1ea1131c106
bug 87: do not export the garbage collection facility from the Timer class.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1695
diff
changeset
|
145 |
NS_FATAL_ERROR ("Event is still running while re-scheduling."); |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
146 |
} |
1688
96172e357b93
add a Timer::Schedule (delay) method
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1687
diff
changeset
|
147 |
m_event = m_impl->Schedule (delay); |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
148 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
149 |
|
1691
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
150 |
void |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
151 |
Timer::Suspend (void) |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
152 |
{ |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
153 |
NS_ASSERT (IsRunning ()); |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
154 |
m_delayLeft = Simulator::GetDelayLeft (m_event); |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
155 |
Simulator::Remove (m_event); |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
156 |
m_flags |= TIMER_SUSPENDED; |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
157 |
} |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
158 |
|
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
159 |
void |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
160 |
Timer::Resume (void) |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
161 |
{ |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
162 |
NS_ASSERT (m_flags & TIMER_SUSPENDED); |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
163 |
m_event = m_impl->Schedule (m_delayLeft); |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
164 |
m_flags &= ~TIMER_SUSPENDED; |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
165 |
} |
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
166 |
|
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
167 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
168 |
} // namespace ns3 |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
169 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
170 |
#include "ns3/test.h" |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
171 |
#include "ns3/simulator.h" |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
172 |
#include "ns3/nstime.h" |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
173 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
174 |
namespace { |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
175 |
void bari (int) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
176 |
{} |
1687 | 177 |
void bar2i (int, int) |
178 |
{} |
|
179 |
void bar3i (int, int, int) |
|
180 |
{} |
|
181 |
void bar4i (int, int, int, int) |
|
182 |
{} |
|
183 |
void bar5i (int, int, int, int, int) |
|
184 |
{} |
|
185 |
void bar6i (int, int, int, int, int, int) |
|
186 |
{} |
|
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
187 |
void barcir (const int &) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
188 |
{} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
189 |
void barir (int &) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
190 |
{} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
191 |
void barip (int *) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
192 |
{} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
193 |
void barcip (const int *) |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
194 |
{} |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
195 |
} // anonymous namespace |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
196 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
197 |
namespace ns3 { |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
198 |
|
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
199 |
class TimerStateTestCase : public TestCase |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
200 |
{ |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
201 |
public: |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
202 |
TimerStateTestCase (); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
203 |
virtual bool DoRun (void); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
204 |
}; |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
205 |
|
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
206 |
TimerStateTestCase::TimerStateTestCase () |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
207 |
: TestCase ("Check correct state transitions") |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
208 |
{} |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
209 |
bool |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
210 |
TimerStateTestCase::DoRun (void) |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
211 |
{ |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
212 |
Timer timer = Timer (Timer::CANCEL_ON_DESTROY); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
213 |
|
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
214 |
timer.SetFunction (&bari); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
215 |
timer.SetArguments (1); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
216 |
timer.SetDelay (Seconds (10.0)); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
217 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsRunning (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
218 |
NS_TEST_ASSERT_MSG_EQ (timer.IsExpired (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
219 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsSuspended (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
220 |
NS_TEST_ASSERT_MSG_EQ (timer.GetState (), Timer::EXPIRED, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
221 |
timer.Schedule (); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
222 |
NS_TEST_ASSERT_MSG_EQ (timer.IsRunning (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
223 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsExpired (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
224 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsSuspended (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
225 |
NS_TEST_ASSERT_MSG_EQ (timer.GetState (), Timer::RUNNING, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
226 |
timer.Suspend (); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
227 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsRunning (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
228 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsExpired (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
229 |
NS_TEST_ASSERT_MSG_EQ (timer.IsSuspended (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
230 |
NS_TEST_ASSERT_MSG_EQ (timer.GetState (), Timer::SUSPENDED, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
231 |
timer.Resume (); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
232 |
NS_TEST_ASSERT_MSG_EQ (timer.IsRunning (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
233 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsExpired (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
234 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsSuspended (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
235 |
NS_TEST_ASSERT_MSG_EQ (timer.GetState (), Timer::RUNNING, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
236 |
timer.Cancel (); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
237 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsRunning (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
238 |
NS_TEST_ASSERT_MSG_EQ (timer.IsExpired (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
239 |
NS_TEST_ASSERT_MSG_EQ (!timer.IsSuspended (), true, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
240 |
NS_TEST_ASSERT_MSG_EQ (timer.GetState (), Timer::EXPIRED, ""); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
241 |
return false; |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
242 |
} |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
243 |
|
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
244 |
class TimerTemplateTestCase : public TestCase |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
245 |
{ |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
246 |
public: |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
247 |
TimerTemplateTestCase (); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
248 |
virtual bool DoRun (void); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
249 |
virtual void DoTeardown (void); |
1676
50cd3fce4f3c
implement the member function version of Timer::SetFunction (a1)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1674
diff
changeset
|
250 |
void bazi (int) {} |
1687 | 251 |
void baz2i (int, int) {} |
252 |
void baz3i (int, int, int) {} |
|
253 |
void baz4i (int, int, int, int) {} |
|
254 |
void baz5i (int, int, int, int, int) {} |
|
255 |
void baz6i (int, int, int, int, int, int) {} |
|
1676
50cd3fce4f3c
implement the member function version of Timer::SetFunction (a1)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1674
diff
changeset
|
256 |
void bazcir (const int&) {} |
50cd3fce4f3c
implement the member function version of Timer::SetFunction (a1)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1674
diff
changeset
|
257 |
void bazir (int&) {} |
50cd3fce4f3c
implement the member function version of Timer::SetFunction (a1)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1674
diff
changeset
|
258 |
void bazip (int *) {} |
50cd3fce4f3c
implement the member function version of Timer::SetFunction (a1)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1674
diff
changeset
|
259 |
void bazcip (const int *) {} |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
260 |
}; |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
261 |
|
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
262 |
TimerTemplateTestCase::TimerTemplateTestCase () |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
263 |
: TestCase ("Check that template magic is working") |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
264 |
{} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
265 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
266 |
bool |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
267 |
TimerTemplateTestCase::DoRun (void) |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
268 |
{ |
4456
1db0749fa7c6
initialize timer in Timer unit tests
Tom Henderson <tomh@tomh.org>
parents:
4451
diff
changeset
|
269 |
Timer timer = Timer (Timer::CANCEL_ON_DESTROY); |
1691
d717c61ae738
add Timer::Suspend/Resume/IsSuspended
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1688
diff
changeset
|
270 |
|
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
271 |
int a = 0; |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
272 |
int &b = a; |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
273 |
const int &c = a; |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
274 |
|
1681
534caea78169
re-implement the Timer class with the new type traits
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1677
diff
changeset
|
275 |
timer.SetFunction (&bari); |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
276 |
timer.SetArguments (2); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
277 |
timer.SetArguments (a); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
278 |
timer.SetArguments (b); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
279 |
timer.SetArguments (c); |
1681
534caea78169
re-implement the Timer class with the new type traits
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1677
diff
changeset
|
280 |
timer.SetFunction (&barir); |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
281 |
timer.SetArguments (2); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
282 |
timer.SetArguments (a); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
283 |
timer.SetArguments (b); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
284 |
timer.SetArguments (c); |
1681
534caea78169
re-implement the Timer class with the new type traits
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1677
diff
changeset
|
285 |
timer.SetFunction (&barcir); |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
286 |
timer.SetArguments (2); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
287 |
timer.SetArguments (a); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
288 |
timer.SetArguments (b); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
289 |
timer.SetArguments (c); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
290 |
// the following call cannot possibly work and is flagged by |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
291 |
// a runtime error. |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
292 |
//timer.SetArguments (0.0); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
293 |
timer.SetDelay (Seconds (1.0)); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
294 |
timer.Schedule (); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
295 |
|
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
296 |
timer.SetFunction (&TimerTemplateTestCase::bazi, this); |
1677
aa92bb3efe11
add testcase, make it work
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1676
diff
changeset
|
297 |
timer.SetArguments (3); |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
298 |
timer.SetFunction (&TimerTemplateTestCase::bazir, this); |
1677
aa92bb3efe11
add testcase, make it work
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1676
diff
changeset
|
299 |
timer.SetArguments (3); |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
300 |
timer.SetFunction (&TimerTemplateTestCase::bazcir, this); |
1677
aa92bb3efe11
add testcase, make it work
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1676
diff
changeset
|
301 |
timer.SetArguments (3); |
1676
50cd3fce4f3c
implement the member function version of Timer::SetFunction (a1)
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
1674
diff
changeset
|
302 |
|
1687 | 303 |
timer.SetFunction (&bar2i); |
304 |
timer.SetArguments (1, 1); |
|
305 |
timer.SetFunction (&bar3i); |
|
306 |
timer.SetArguments (1, 1, 1); |
|
307 |
timer.SetFunction (&bar4i); |
|
308 |
timer.SetArguments (1, 1, 1, 1); |
|
309 |
timer.SetFunction (&bar5i); |
|
310 |
timer.SetArguments (1, 1, 1, 1, 1); |
|
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
311 |
// unsupported in simulator class |
1687 | 312 |
//timer.SetFunction (&bar6i); |
313 |
//timer.SetArguments (1, 1, 1, 1, 1, 1); |
|
314 |
||
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
315 |
timer.SetFunction (&TimerTemplateTestCase::baz2i, this); |
1687 | 316 |
timer.SetArguments (1, 1); |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
317 |
timer.SetFunction (&TimerTemplateTestCase::baz3i, this); |
1687 | 318 |
timer.SetArguments (1, 1, 1); |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
319 |
timer.SetFunction (&TimerTemplateTestCase::baz4i, this); |
1687 | 320 |
timer.SetArguments (1, 1, 1, 1); |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
321 |
timer.SetFunction (&TimerTemplateTestCase::baz5i, this); |
1687 | 322 |
timer.SetArguments (1, 1, 1, 1, 1); |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
323 |
// unsupported in simulator class |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
324 |
//timer.SetFunction (&TimerTemplateTestCase::baz6i, this); |
1687 | 325 |
//timer.SetArguments (1, 1, 1, 1, 1, 1); |
326 |
||
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
327 |
Simulator::Run (); |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
328 |
Simulator::Destroy (); |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
329 |
|
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
330 |
return false; |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
331 |
} |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
332 |
|
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
333 |
void |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
334 |
TimerTemplateTestCase::DoTeardown (void) |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
335 |
{ |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
336 |
Simulator::Run (); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
337 |
Simulator::Destroy (); |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
338 |
} |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
339 |
|
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
340 |
static class TimerTestSuite : public TestSuite |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
341 |
{ |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
342 |
public: |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
343 |
TimerTestSuite () |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
344 |
: TestSuite ("timer", UNIT) |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
345 |
{ |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
346 |
AddTestCase (new TimerStateTestCase ()); |
5290
e7a7e04cbe24
forgot to add template testcase
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
5289
diff
changeset
|
347 |
AddTestCase (new TimerTemplateTestCase ()); |
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
348 |
} |
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
349 |
} g_timerTestSuite; |
1673
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
350 |
|
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
351 |
} // namespace ns3 |
9886637756a1
Implement a Timer API
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
352 |
|
5289
8b62d41d9662
bug 675: convert unit tests to new test framework
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
4456
diff
changeset
|
353 |