author | Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
Fri, 15 Dec 2006 10:01:23 +0100 | |
changeset 200 | 46031a283b0d |
parent 198 | 91baf9670758 |
child 209 | 8b343b9727d7 |
permissions | -rw-r--r-- |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
2 |
/* |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
3 |
* Copyright (c) 2005,2006 INRIA |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
4 |
* All rights reserved. |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
5 |
* |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
6 |
* This program is free software; you can redistribute it and/or modify |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
7 |
* it under the terms of the GNU General Public License version 2 as |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
8 |
* published by the Free Software Foundation; |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
9 |
* |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
10 |
* This program is distributed in the hope that it will be useful, |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
13 |
* GNU General Public License for more details. |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
14 |
* |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
16 |
* along with this program; if not, write to the Free Software |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
17 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
18 |
* |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
19 |
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
20 |
*/ |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
#include "simulator.h" |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
#include "scheduler.h" |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
24 |
#include "event-impl.h" |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
25 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
26 |
#include <math.h> |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
27 |
#include <cassert> |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
#include <fstream> |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
#include <list> |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
30 |
#include <vector> |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
31 |
#include <iostream> |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
32 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
33 |
#define noTRACE_SIMU 1 |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
34 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
35 |
#ifdef TRACE_SIMU |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
36 |
#include <iostream> |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
37 |
# define TRACE(x) \ |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
38 |
std::Cout << "SIMU TRACE " << Simulator::nowS () << " " << x << std::endl; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
39 |
# define TRACE_S(x) \ |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
40 |
std::cout << "SIMU TRACE " << x << std::endl; |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
41 |
#else /* TRACE_SIMU */ |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
42 |
# define TRACE(format,...) |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
43 |
# define TRACE_S(format,...) |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
44 |
#endif /* TRACE_SIMU */ |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
45 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
46 |
|
16
99e833adbb46
change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
14
diff
changeset
|
47 |
namespace ns3 { |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
48 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
49 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
50 |
class SimulatorPrivate { |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
51 |
public: |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
52 |
SimulatorPrivate (Scheduler *events); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
53 |
~SimulatorPrivate (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
54 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
55 |
void EnableLogTo (char const *filename); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
56 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
57 |
bool IsFinished (void) const; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
58 |
Time Next (void) const; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
59 |
void Stop (void); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
60 |
void StopAt (Time const &time); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
61 |
EventId Schedule (Time const &time, EventImpl *event); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
62 |
void ScheduleNow (EventImpl *event); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
63 |
void ScheduleDestroy (EventImpl *event); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
64 |
void Remove (EventId ev); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
65 |
void Cancel (EventId ev); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
66 |
bool IsExpired (EventId ev); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
67 |
void Run (void); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
68 |
Time Now (void) const; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
69 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
70 |
private: |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
71 |
void ProcessOneEvent (void); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
72 |
uint64_t NextNs (void) const; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
73 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
74 |
typedef std::list<std::pair<EventImpl *,uint32_t> > Events; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
75 |
Events m_destroy; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
76 |
uint64_t m_stopAt; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
77 |
bool m_stop; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
78 |
Scheduler *m_events; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
79 |
uint32_t m_uid; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
80 |
uint32_t m_currentUid; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
81 |
uint64_t m_currentNs; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
82 |
std::ofstream m_log; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
83 |
std::ifstream m_inputLog; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
84 |
bool m_logEnable; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
85 |
}; |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
86 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
87 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
88 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
89 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
90 |
SimulatorPrivate::SimulatorPrivate (Scheduler *events) |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
91 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
92 |
m_stop = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
93 |
m_stopAt = 0; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
94 |
m_events = events; |
200
46031a283b0d
We need to make sure that the uid of the first event generated is different from the uid of the simulator when no events have yet been run.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
198
diff
changeset
|
95 |
// uids are allocated from 1. |
46031a283b0d
We need to make sure that the uid of the first event generated is different from the uid of the simulator when no events have yet been run.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
198
diff
changeset
|
96 |
m_uid = 1; |
46031a283b0d
We need to make sure that the uid of the first event generated is different from the uid of the simulator when no events have yet been run.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
198
diff
changeset
|
97 |
// before ::Run is entered, the m_currentUid will be zero |
46031a283b0d
We need to make sure that the uid of the first event generated is different from the uid of the simulator when no events have yet been run.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
198
diff
changeset
|
98 |
m_currentUid = 0; |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
99 |
m_logEnable = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
100 |
m_currentNs = 0; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
101 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
102 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
103 |
SimulatorPrivate::~SimulatorPrivate () |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
104 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
105 |
while (!m_destroy.empty ()) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
106 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
107 |
EventImpl *ev = m_destroy.front ().first; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
108 |
m_destroy.pop_front (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
109 |
TRACE ("handle destroy " << ev); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
110 |
ev->Invoke (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
111 |
delete ev; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
112 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
113 |
delete m_events; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
114 |
m_events = (Scheduler *)0xdeadbeaf; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
115 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
116 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
117 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
118 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
119 |
SimulatorPrivate::EnableLogTo (char const *filename) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
120 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
121 |
m_log.open (filename); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
122 |
m_logEnable = true; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
123 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
124 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
125 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
126 |
SimulatorPrivate::ProcessOneEvent (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
127 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
128 |
EventImpl *nextEv = m_events->PeekNext (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
129 |
Scheduler::EventKey nextKey = m_events->PeekNextKey (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
130 |
m_events->RemoveNext (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
131 |
TRACE ("handle " << nextEv); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
132 |
m_currentNs = nextKey.m_ns; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
133 |
m_currentUid = nextKey.m_uid; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
134 |
if (m_logEnable) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
135 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
136 |
m_log << "e "<<nextKey.m_uid << " " << nextKey.m_ns << std::endl; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
137 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
138 |
nextEv->Invoke (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
139 |
delete nextEv; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
140 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
141 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
142 |
bool |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
143 |
SimulatorPrivate::IsFinished (void) const |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
144 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
145 |
return m_events->IsEmpty (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
146 |
} |
143
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
147 |
uint64_t |
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
148 |
SimulatorPrivate::NextNs (void) const |
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
149 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
150 |
assert (!m_events->IsEmpty ()); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
151 |
Scheduler::EventKey nextKey = m_events->PeekNextKey (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
152 |
return nextKey.m_ns; |
143
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
153 |
} |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
154 |
Time |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
155 |
SimulatorPrivate::Next (void) const |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
156 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
157 |
return NanoSeconds (NextNs ()); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
158 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
159 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
160 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
161 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
162 |
SimulatorPrivate::Run (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
163 |
{ |
143
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
164 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
165 |
while (!m_events->IsEmpty () && !m_stop && |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
166 |
(m_stopAt == 0 || m_stopAt > NextNs ())) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
167 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
168 |
ProcessOneEvent (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
169 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
170 |
m_log.close (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
171 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
172 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
173 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
174 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
175 |
SimulatorPrivate::Stop (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
176 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
177 |
m_stop = true; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
178 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
179 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
180 |
SimulatorPrivate::StopAt (Time const &at) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
181 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
182 |
assert (at.IsPositive ()); |
163
2a7e05018eeb
rename Time::ApproximateTo methods to Time::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
162
diff
changeset
|
183 |
m_stopAt = at.GetNanoSeconds (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
184 |
} |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
185 |
EventId |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
186 |
SimulatorPrivate::Schedule (Time const &time, EventImpl *event) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
187 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
188 |
assert (time.IsPositive ()); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
189 |
assert (time >= NanoSeconds (m_currentNs)); |
163
2a7e05018eeb
rename Time::ApproximateTo methods to Time::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
162
diff
changeset
|
190 |
uint64_t ns = (uint64_t) time.GetNanoSeconds (); |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
191 |
Scheduler::EventKey key = {ns, m_uid}; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
192 |
if (m_logEnable) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
193 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
194 |
m_log << "i "<<m_currentUid<<" "<<m_currentNs<<" " |
198
91baf9670758
Log format is defined in units of nano seconds rather than seconds.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
187
diff
changeset
|
195 |
<<m_uid<<" "<<time.GetNanoSeconds () << std::endl; |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
196 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
197 |
m_uid++; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
198 |
return m_events->Insert (event, key); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
199 |
} |
145
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
200 |
void |
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
201 |
SimulatorPrivate::ScheduleNow (EventImpl *event) |
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
202 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
203 |
uint64_t ns = m_currentNs; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
204 |
Scheduler::EventKey key = {ns, m_uid}; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
205 |
if (m_logEnable) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
206 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
207 |
m_log << "i "<<m_currentUid<<" "<<m_currentNs<<" " |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
208 |
<<m_uid<<" "<<ns << std::endl; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
209 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
210 |
m_uid++; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
211 |
m_events->Insert (event, key); |
145
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
212 |
} |
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
213 |
void |
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
214 |
SimulatorPrivate::ScheduleDestroy (EventImpl *event) |
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
215 |
{ |
147
705658c244c3
implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
146
diff
changeset
|
216 |
m_destroy.push_back (std::make_pair (event, m_uid)); |
705658c244c3
implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
146
diff
changeset
|
217 |
if (m_logEnable) |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
218 |
{ |
163
2a7e05018eeb
rename Time::ApproximateTo methods to Time::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
162
diff
changeset
|
219 |
m_log << "id " << m_currentUid << " " << Now ().GetNanoSeconds () << " " |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
220 |
<< m_uid << std::endl; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
221 |
} |
147
705658c244c3
implement ScheduleNow and ScheduleDestroy methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
146
diff
changeset
|
222 |
m_uid++; |
145
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
223 |
} |
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
224 |
|
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
225 |
Time |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
226 |
SimulatorPrivate::Now (void) const |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
227 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
228 |
return NanoSeconds (m_currentNs); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
229 |
} |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
230 |
|
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
231 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
232 |
SimulatorPrivate::Remove (EventId ev) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
233 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
234 |
Scheduler::EventKey key; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
235 |
EventImpl *impl = m_events->Remove (ev, &key); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
236 |
delete impl; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
237 |
if (m_logEnable) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
238 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
239 |
m_log << "r " << m_currentUid << " " << m_currentNs << " " |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
240 |
<< key.m_uid << " " << key.m_ns << std::endl; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
241 |
} |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
242 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
243 |
|
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
244 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
245 |
SimulatorPrivate::Cancel (EventId id) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
246 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
247 |
EventImpl *ev = id.GetEventImpl (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
248 |
ev->Cancel (); |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
249 |
} |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
250 |
|
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
251 |
bool |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
252 |
SimulatorPrivate::IsExpired (EventId ev) |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
253 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
254 |
if (ev.GetEventImpl () != 0 && |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
255 |
ev.GetNs () <= m_currentNs && |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
256 |
ev.GetUid () < m_currentUid) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
257 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
258 |
return false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
259 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
260 |
return true; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
261 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
262 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
263 |
|
16
99e833adbb46
change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
14
diff
changeset
|
264 |
}; // namespace ns3 |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
265 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
266 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
267 |
#include "scheduler-list.h" |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
268 |
#include "scheduler-heap.h" |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
269 |
#include "scheduler-map.h" |
45
f963078c6e95
enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
38
diff
changeset
|
270 |
#include "scheduler-factory.h" |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
271 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
272 |
|
16
99e833adbb46
change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
14
diff
changeset
|
273 |
namespace ns3 { |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
274 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
275 |
SimulatorPrivate *Simulator::m_priv = 0; |
52
72a52d59ee9f
member variables coding style change
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
45
diff
changeset
|
276 |
Simulator::ListType Simulator::m_listType = LINKED_LIST; |
72a52d59ee9f
member variables coding style change
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
45
diff
changeset
|
277 |
SchedulerFactory const*Simulator::m_schedFactory = 0; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
278 |
|
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
279 |
void Simulator::SetLinkedList (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
280 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
281 |
m_listType = LINKED_LIST; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
282 |
} |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
283 |
void Simulator::SetBinaryHeap (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
284 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
285 |
m_listType = BINARY_HEAP; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
286 |
} |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
287 |
void Simulator::SetStdMap (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
288 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
289 |
m_listType = STD_MAP; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
290 |
} |
45
f963078c6e95
enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
38
diff
changeset
|
291 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
292 |
Simulator::SetExternal (SchedulerFactory const*factory) |
45
f963078c6e95
enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
38
diff
changeset
|
293 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
294 |
assert (factory != 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
295 |
m_schedFactory = factory; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
296 |
m_listType = EXTERNAL; |
45
f963078c6e95
enable user-provided schedulers
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
38
diff
changeset
|
297 |
} |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
298 |
void Simulator::EnableLogTo (char const *filename) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
299 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
300 |
GetPriv ()->EnableLogTo (filename); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
301 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
302 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
303 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
304 |
SimulatorPrivate * |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
305 |
Simulator::GetPriv (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
306 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
307 |
if (m_priv == 0) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
308 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
309 |
Scheduler *events; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
310 |
switch (m_listType) { |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
311 |
case LINKED_LIST: |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
312 |
events = new SchedulerList (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
313 |
break; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
314 |
case BINARY_HEAP: |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
315 |
events = new SchedulerHeap (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
316 |
break; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
317 |
case STD_MAP: |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
318 |
events = new SchedulerMap (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
319 |
break; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
320 |
case EXTERNAL: |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
321 |
events = m_schedFactory->Create (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
322 |
default: // not reached |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
323 |
events = 0; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
324 |
assert (false); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
325 |
break; |
129
c6c58f17dd01
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
122
diff
changeset
|
326 |
} |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
327 |
m_priv = new SimulatorPrivate (events); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
328 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
329 |
TRACE_S ("priv " << m_priv); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
330 |
return m_priv; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
331 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
332 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
333 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
334 |
Simulator::Destroy (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
335 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
336 |
delete m_priv; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
337 |
m_priv = 0; |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
338 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
339 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
340 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
341 |
bool |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
342 |
Simulator::IsFinished (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
343 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
344 |
return GetPriv ()->IsFinished (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
345 |
} |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
346 |
Time |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
347 |
Simulator::Next (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
348 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
349 |
return GetPriv ()->Next (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
350 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
351 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
352 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
353 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
354 |
Simulator::Run (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
355 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
356 |
GetPriv ()->Run (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
357 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
358 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
359 |
Simulator::Stop (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
360 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
361 |
TRACE ("stop"); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
362 |
GetPriv ()->Stop (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
363 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
364 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
365 |
Simulator::StopAt (Time const &at) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
366 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
367 |
GetPriv ()->StopAt (at); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
368 |
} |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
369 |
Time |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
370 |
Simulator::Now (void) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
371 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
372 |
return GetPriv ()->Now (); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
373 |
} |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
374 |
|
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
375 |
EventImpl * |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
376 |
Simulator::MakeEvent (void (*f) (void)) |
145
947b77174b72
start of work to re-implement Schedule* methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
377 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
378 |
// zero arg version |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
379 |
class EventFunctionImpl0 : public EventImpl { |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
380 |
public: |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
381 |
typedef void (*F)(void); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
382 |
|
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
383 |
EventFunctionImpl0 (F function) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
384 |
: m_function (function) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
385 |
{} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
386 |
virtual ~EventFunctionImpl0 () {} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
387 |
protected: |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
388 |
virtual void Notify (void) { |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
389 |
(*m_function) (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
390 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
391 |
private: |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
392 |
F m_function; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
393 |
} *ev = new EventFunctionImpl0 (f); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
394 |
return ev; |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
395 |
} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
396 |
EventId |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
397 |
Simulator::Schedule (Time const &time, EventImpl *ev) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
398 |
{ |
162
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
150
diff
changeset
|
399 |
return GetPriv ()->Schedule (Now () + time, ev); |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
400 |
} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
401 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
402 |
Simulator::ScheduleNow (EventImpl *ev) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
403 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
404 |
GetPriv ()->ScheduleNow (ev); |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
405 |
} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
406 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
407 |
Simulator::ScheduleDestroy (EventImpl *ev) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
408 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
409 |
GetPriv ()->ScheduleDestroy (ev); |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
410 |
} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
411 |
EventId |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
412 |
Simulator::Schedule (Time const &time, void (*f) (void)) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
413 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
414 |
return Schedule (time, MakeEvent (f)); |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
415 |
} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
416 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
417 |
Simulator::ScheduleNow (void (*f) (void)) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
418 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
419 |
return ScheduleNow (MakeEvent (f)); |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
420 |
} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
421 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
422 |
Simulator::ScheduleDestroy (void (*f) (void)) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
423 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
424 |
return ScheduleDestroy (MakeEvent (f)); |
75
0f3f4b0a158b
reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
54
diff
changeset
|
425 |
} |
0f3f4b0a158b
reorganize the implementation of template member methods in Simulator class
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
54
diff
changeset
|
426 |
|
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
427 |
|
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
428 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
429 |
Simulator::Remove (EventId ev) |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
430 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
431 |
return GetPriv ()->Remove (ev); |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
432 |
} |
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
433 |
|
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
434 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
435 |
Simulator::Cancel (EventId ev) |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
436 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
437 |
return GetPriv ()->Cancel (ev); |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
438 |
} |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
439 |
bool |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
440 |
Simulator::IsExpired (EventId id) |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
441 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
442 |
return GetPriv ()->IsExpired (id); |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
443 |
} |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
24
diff
changeset
|
444 |
|
16
99e833adbb46
change yans namespace to ns3
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
14
diff
changeset
|
445 |
}; // namespace ns3 |
9
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
446 |
|
2c31ae7c94db
import from yans
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
447 |
|
30
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
448 |
#ifdef RUN_SELF_TESTS |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
449 |
|
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
450 |
#include "ns3/test.h" |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
451 |
|
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
452 |
namespace ns3 { |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
453 |
|
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
454 |
static void foo0 (void) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
455 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
456 |
static void foo1 (int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
457 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
458 |
static void foo2 (int, int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
459 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
460 |
static void foo3 (int, int, int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
461 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
462 |
static void foo4 (int, int, int, int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
463 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
464 |
static void foo5 (int, int, int, int, int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
465 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
466 |
|
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
467 |
|
30
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
468 |
class SimulatorTests : public Test { |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
469 |
public: |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
470 |
SimulatorTests (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
471 |
virtual ~SimulatorTests (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
472 |
virtual bool RunTests (void); |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
473 |
private: |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
474 |
uint64_t NowUs (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
475 |
bool RunOneTest (void); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
476 |
void A (int a); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
477 |
void B (int b); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
478 |
void C (int c); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
479 |
void D (int d); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
480 |
void bar0 (void); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
481 |
void bar1 (int); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
482 |
void bar2 (int, int); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
483 |
void bar3 (int, int, int); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
484 |
void bar4 (int, int, int, int); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
485 |
void bar5 (int, int, int, int, int); |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
486 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
487 |
bool m_b; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
488 |
bool m_a; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
489 |
bool m_c; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
490 |
bool m_d; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
491 |
EventId m_idC; |
30
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
492 |
}; |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
493 |
|
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
494 |
SimulatorTests::SimulatorTests () |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
495 |
: Test ("Simulator") |
30
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
496 |
{} |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
497 |
SimulatorTests::~SimulatorTests () |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
498 |
{} |
143
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
499 |
uint64_t |
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
500 |
SimulatorTests::NowUs (void) |
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
501 |
{ |
163
2a7e05018eeb
rename Time::ApproximateTo methods to Time::Get
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
162
diff
changeset
|
502 |
uint64_t ns = Now ().GetNanoSeconds (); |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
503 |
return ns / 1000; |
143
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
129
diff
changeset
|
504 |
} |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
505 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
506 |
SimulatorTests::A (int a) |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
507 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
508 |
m_a = false; |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
509 |
} |
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
510 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
511 |
SimulatorTests::B (int b) |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
512 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
513 |
if (b != 2 || NowUs () != 11) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
514 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
515 |
m_b = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
516 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
517 |
else |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
518 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
519 |
m_b = true; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
520 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
521 |
Simulator::Remove (m_idC); |
162
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
150
diff
changeset
|
522 |
Simulator::Schedule (MicroSeconds (10), &SimulatorTests::D, this, 4); |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
523 |
} |
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
524 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
525 |
SimulatorTests::C (int c) |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
526 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
527 |
m_c = false; |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
528 |
} |
32 | 529 |
void |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
530 |
SimulatorTests::D (int d) |
32 | 531 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
532 |
if (d != 4 || NowUs () != (11+10)) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
533 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
534 |
m_d = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
535 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
536 |
else |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
537 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
538 |
m_d = true; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
539 |
} |
32 | 540 |
} |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
541 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
542 |
SimulatorTests::bar0 (void) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
543 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
544 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
545 |
SimulatorTests::bar1 (int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
546 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
547 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
548 |
SimulatorTests::bar2 (int, int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
549 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
550 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
551 |
SimulatorTests::bar3 (int, int, int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
552 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
553 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
554 |
SimulatorTests::bar4 (int, int, int, int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
555 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
556 |
void |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
557 |
SimulatorTests::bar5 (int, int, int, int, int) |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
558 |
{} |
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
559 |
|
114
fe0504af6d16
test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
111
diff
changeset
|
560 |
bool |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
561 |
SimulatorTests::RunOneTest (void) |
30
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
562 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
563 |
bool ok = true; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
564 |
m_a = true; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
565 |
m_b = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
566 |
m_c = true; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
567 |
m_d = false; |
114
fe0504af6d16
test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
111
diff
changeset
|
568 |
|
162
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
150
diff
changeset
|
569 |
EventId a = Simulator::Schedule (MicroSeconds (10), &SimulatorTests::A, this, 1); |
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
150
diff
changeset
|
570 |
Simulator::Schedule (MicroSeconds (11), &SimulatorTests::B, this, 2); |
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
150
diff
changeset
|
571 |
m_idC = Simulator::Schedule (MicroSeconds (12), &SimulatorTests::C, this, 3); |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
572 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
573 |
Simulator::Cancel (a); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
574 |
Simulator::Run (); |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
575 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
576 |
if (!m_a || !m_b || !m_c || !m_d) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
577 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
578 |
ok = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
579 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
580 |
return ok; |
114
fe0504af6d16
test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
111
diff
changeset
|
581 |
} |
fe0504af6d16
test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
111
diff
changeset
|
582 |
bool |
122
6b8f1eda5c57
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
121
diff
changeset
|
583 |
SimulatorTests::RunTests (void) |
114
fe0504af6d16
test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
111
diff
changeset
|
584 |
{ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
585 |
bool ok = true; |
114
fe0504af6d16
test each default event scheduler
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
111
diff
changeset
|
586 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
587 |
Simulator::SetLinkedList (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
588 |
if (!RunOneTest ()) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
589 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
590 |
ok = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
591 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
592 |
Simulator::Destroy (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
593 |
Simulator::SetBinaryHeap (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
594 |
if (!RunOneTest ()) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
595 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
596 |
ok = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
597 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
598 |
Simulator::Destroy (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
599 |
Simulator::SetStdMap (); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
600 |
if (!RunOneTest ()) |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
601 |
{ |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
602 |
ok = false; |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
603 |
} |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
604 |
Simulator::Destroy (); |
31
2def0da92178
add simulator tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
30
diff
changeset
|
605 |
|
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
606 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
607 |
Simulator::Schedule (Seconds (0.0), &foo0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
608 |
Simulator::Schedule (Seconds (0.0), &foo1, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
609 |
Simulator::Schedule (Seconds (0.0), &foo2, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
610 |
Simulator::Schedule (Seconds (0.0), &foo3, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
611 |
Simulator::Schedule (Seconds (0.0), &foo4, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
612 |
Simulator::Schedule (Seconds (0.0), &foo5, 0, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
613 |
Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar0, this); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
614 |
Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar1, this, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
615 |
Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar2, this, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
616 |
Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar3, this, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
617 |
Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar4, this, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
618 |
Simulator::Schedule (Seconds (0.0), &SimulatorTests::bar5, this, 0, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
619 |
Simulator::ScheduleNow (&foo0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
620 |
Simulator::ScheduleNow (&foo1, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
621 |
Simulator::ScheduleNow (&foo2, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
622 |
Simulator::ScheduleNow (&foo3, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
623 |
Simulator::ScheduleNow (&foo4, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
624 |
Simulator::ScheduleNow (&foo5, 0, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
625 |
Simulator::ScheduleNow (&SimulatorTests::bar0, this); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
626 |
Simulator::ScheduleNow (&SimulatorTests::bar1, this, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
627 |
Simulator::ScheduleNow (&SimulatorTests::bar2, this, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
628 |
Simulator::ScheduleNow (&SimulatorTests::bar3, this, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
629 |
Simulator::ScheduleNow (&SimulatorTests::bar4, this, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
630 |
Simulator::ScheduleNow (&SimulatorTests::bar5, this, 0, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
631 |
Simulator::ScheduleDestroy (&foo0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
632 |
Simulator::ScheduleDestroy (&foo1, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
633 |
Simulator::ScheduleDestroy (&foo2, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
634 |
Simulator::ScheduleDestroy (&foo3, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
635 |
Simulator::ScheduleDestroy (&foo4, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
636 |
Simulator::ScheduleDestroy (&foo5, 0, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
637 |
Simulator::ScheduleDestroy (&SimulatorTests::bar0, this); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
638 |
Simulator::ScheduleDestroy (&SimulatorTests::bar1, this, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
639 |
Simulator::ScheduleDestroy (&SimulatorTests::bar2, this, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
640 |
Simulator::ScheduleDestroy (&SimulatorTests::bar3, this, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
641 |
Simulator::ScheduleDestroy (&SimulatorTests::bar4, this, 0, 0, 0, 0); |
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
642 |
Simulator::ScheduleDestroy (&SimulatorTests::bar5, this, 0, 0, 0, 0, 0); |
181
006158ef00f1
fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
643 |
|
006158ef00f1
fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
644 |
Simulator::Run (); |
006158ef00f1
fix memory leaks
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
645 |
Simulator::Destroy (); |
146
2c9ef359e320
implement overloads for ScheduleNow and ScheduleDestroy
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
145
diff
changeset
|
646 |
|
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
148
diff
changeset
|
647 |
return ok; |
30
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
648 |
} |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
649 |
|
53
ae406f4957d5
variable/method/function coding style update
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
52
diff
changeset
|
650 |
SimulatorTests gSimulatorTests; |
30
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
651 |
|
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
652 |
}; // namespace ns3 |
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
653 |
|
eb38b7903dfb
add empty simulator test
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
29
diff
changeset
|
654 |
#endif /* RUN_SELF_TESTS */ |
24 | 655 |
|
656 |
||
37
af78cb75be51
improve tests
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
36
diff
changeset
|
657 |