A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Portuguese
Docs ▼
Wiki
Manual
Models
Develop ▼
API
Bugs
API
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
distributed-simulator-impl.h
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* This program is free software; you can redistribute it and/or modify
4
* it under the terms of the GNU General Public License version 2 as
5
* published by the Free Software Foundation;
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software
14
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
*
16
* Author: George Riley <riley@ece.gatech.edu>
17
*/
18
19
#ifndef DISTRIBUTED_SIMULATOR_IMPL_H
20
#define DISTRIBUTED_SIMULATOR_IMPL_H
21
22
#include "ns3/simulator-impl.h"
23
#include "ns3/scheduler.h"
24
#include "ns3/event-impl.h"
25
#include "ns3/ptr.h"
26
27
#include <list>
28
29
namespace
ns3 {
30
36
class
LbtsMessage
37
{
38
public
:
39
LbtsMessage
()
40
:
m_txCount
(0),
41
m_rxCount
(0),
42
m_myId
(0),
43
m_isFinished
(false)
44
{
45
}
46
53
LbtsMessage
(uint32_t rxc, uint32_t txc, uint32_t
id
,
bool
isFinished,
const
Time
& t)
54
:
m_txCount
(txc),
55
m_rxCount
(rxc),
56
m_myId
(id),
57
m_smallestTime
(t),
58
m_isFinished
(isFinished)
59
{
60
}
61
62
~LbtsMessage
();
63
67
Time
GetSmallestTime
();
71
uint32_t
GetTxCount
();
75
uint32_t
GetRxCount
();
79
uint32_t
GetMyId
();
80
81
bool
IsFinished
();
82
83
private
:
84
uint32_t
m_txCount
;
85
uint32_t
m_rxCount
;
86
uint32_t
m_myId
;
87
Time
m_smallestTime
;
88
bool
m_isFinished
;
89
};
90
97
class
DistributedSimulatorImpl
:
public
SimulatorImpl
98
{
99
public
:
100
static
TypeId
GetTypeId
(
void
);
101
102
DistributedSimulatorImpl
();
103
~DistributedSimulatorImpl
();
104
105
// virtual from SimulatorImpl
106
virtual
void
Destroy
();
107
virtual
bool
IsFinished
(
void
)
const
;
108
virtual
void
Stop
(
void
);
109
virtual
void
Stop
(
Time
const
&time);
110
virtual
EventId
Schedule
(
Time
const
&time,
EventImpl
*event);
111
virtual
void
ScheduleWithContext
(uint32_t context,
Time
const
&time,
EventImpl
*event);
112
virtual
EventId
ScheduleNow
(
EventImpl
*event);
113
virtual
EventId
ScheduleDestroy
(
EventImpl
*event);
114
virtual
void
Remove
(
const
EventId
&ev);
115
virtual
void
Cancel
(
const
EventId
&ev);
116
virtual
bool
IsExpired
(
const
EventId
&ev)
const
;
117
virtual
void
Run
(
void
);
118
virtual
Time
Now
(
void
)
const
;
119
virtual
Time
GetDelayLeft
(
const
EventId
&
id
)
const
;
120
virtual
Time
GetMaximumSimulationTime
(
void
)
const
;
121
virtual
void
SetScheduler
(
ObjectFactory
schedulerFactory);
122
virtual
uint32_t
GetSystemId
(
void
)
const
;
123
virtual
uint32_t
GetContext
(
void
)
const
;
124
125
private
:
126
virtual
void
DoDispose
(
void
);
127
void
CalculateLookAhead
(
void
);
128
bool
IsLocalFinished
(
void
)
const
;
129
130
void
ProcessOneEvent
(
void
);
131
uint64_t
NextTs
(
void
)
const
;
132
Time
Next
(
void
)
const
;
133
typedef
std::list<EventId>
DestroyEvents
;
134
135
DestroyEvents
m_destroyEvents
;
136
bool
m_stop
;
137
bool
m_globalFinished
;
// Are all parallel instances completed.
138
Ptr<Scheduler>
m_events
;
139
uint32_t
m_uid
;
140
uint32_t
m_currentUid
;
141
uint64_t
m_currentTs
;
142
uint32_t
m_currentContext
;
143
// number of events that have been inserted but not yet scheduled,
144
// not counting the "destroy" events; this is used for validation
145
int
m_unscheduledEvents
;
146
147
LbtsMessage
*
m_pLBTS
;
// Allocated once we know how many systems
148
uint32_t
m_myId
;
// MPI Rank
149
uint32_t
m_systemCount
;
// MPI Size
150
Time
m_grantedTime
;
// Last LBTS
151
static
Time
m_lookAhead
;
// Lookahead value
152
153
};
154
155
}
// namespace ns3
156
157
#endif
/* DISTRIBUTED_SIMULATOR_IMPL_H */
ns3::DistributedSimulatorImpl::m_grantedTime
Time m_grantedTime
Definition:
distributed-simulator-impl.h:150
ns3::LbtsMessage::GetMyId
uint32_t GetMyId()
Definition:
distributed-simulator-impl.cc:66
ns3::Time
keep track of time values and allow control of global simulation resolution
Definition:
nstime.h:81
ns3::DistributedSimulatorImpl::~DistributedSimulatorImpl
~DistributedSimulatorImpl()
Definition:
distributed-simulator-impl.cc:117
ns3::Ptr
smart pointer class similar to boost::intrusive_ptr
Definition:
ptr.h:59
ns3::DistributedSimulatorImpl::SetScheduler
virtual void SetScheduler(ObjectFactory schedulerFactory)
Definition:
distributed-simulator-impl.cc:268
ns3::LbtsMessage::m_myId
uint32_t m_myId
Definition:
distributed-simulator-impl.h:86
ns3::DistributedSimulatorImpl::m_events
Ptr< Scheduler > m_events
Definition:
distributed-simulator-impl.h:138
ns3::DistributedSimulatorImpl::m_systemCount
uint32_t m_systemCount
Definition:
distributed-simulator-impl.h:149
ns3::LbtsMessage::IsFinished
bool IsFinished()
Definition:
distributed-simulator-impl.cc:72
ns3::DistributedSimulatorImpl::ScheduleDestroy
virtual EventId ScheduleDestroy(EventImpl *event)
Definition:
distributed-simulator-impl.cc:479
ns3::DistributedSimulatorImpl::GetMaximumSimulationTime
virtual Time GetMaximumSimulationTime(void) const
Definition:
distributed-simulator-impl.cc:583
ns3::DistributedSimulatorImpl::DestroyEvents
std::list< EventId > DestroyEvents
Definition:
distributed-simulator-impl.h:133
ns3::LbtsMessage::m_txCount
uint32_t m_txCount
Definition:
distributed-simulator-impl.h:84
ns3::LbtsMessage::~LbtsMessage
~LbtsMessage()
Definition:
distributed-simulator-impl.cc:44
ns3::DistributedSimulatorImpl::Now
virtual Time Now(void) const
Definition:
distributed-simulator-impl.cc:488
ns3::DistributedSimulatorImpl::DoDispose
virtual void DoDispose(void)
Definition:
distributed-simulator-impl.cc:122
ns3::DistributedSimulatorImpl::GetDelayLeft
virtual Time GetDelayLeft(const EventId &id) const
Definition:
distributed-simulator-impl.cc:494
ns3::DistributedSimulatorImpl::ProcessOneEvent
void ProcessOneEvent(void)
Definition:
distributed-simulator-impl.cc:284
ns3::DistributedSimulatorImpl::m_currentContext
uint32_t m_currentContext
Definition:
distributed-simulator-impl.h:142
ns3::DistributedSimulatorImpl::DistributedSimulatorImpl
DistributedSimulatorImpl()
Definition:
distributed-simulator-impl.cc:89
ns3::DistributedSimulatorImpl::ScheduleNow
virtual EventId ScheduleNow(EventImpl *event)
Definition:
distributed-simulator-impl.cc:465
ns3::LbtsMessage::GetTxCount
uint32_t GetTxCount()
Definition:
distributed-simulator-impl.cc:55
ns3::LbtsMessage::GetRxCount
uint32_t GetRxCount()
Definition:
distributed-simulator-impl.cc:61
ns3::LbtsMessage::LbtsMessage
LbtsMessage()
Definition:
distributed-simulator-impl.h:39
ns3::DistributedSimulatorImpl::m_destroyEvents
DestroyEvents m_destroyEvents
Definition:
distributed-simulator-impl.h:135
ns3::DistributedSimulatorImpl::m_stop
bool m_stop
Definition:
distributed-simulator-impl.h:136
ns3::DistributedSimulatorImpl::Remove
virtual void Remove(const EventId &ev)
Definition:
distributed-simulator-impl.cc:507
ns3::DistributedSimulatorImpl::GetTypeId
static TypeId GetTypeId(void)
Definition:
distributed-simulator-impl.cc:80
ns3::LbtsMessage::m_smallestTime
Time m_smallestTime
Definition:
distributed-simulator-impl.h:87
ns3::DistributedSimulatorImpl
distributed simulator implementation using lookahead
Definition:
distributed-simulator-impl.h:97
ns3::DistributedSimulatorImpl::Destroy
virtual void Destroy()
Definition:
distributed-simulator-impl.cc:135
ns3::DistributedSimulatorImpl::ScheduleWithContext
virtual void ScheduleWithContext(uint32_t context, Time const &time, EventImpl *event)
Definition:
distributed-simulator-impl.cc:450
ns3::DistributedSimulatorImpl::NextTs
uint64_t NextTs(void) const
Definition:
distributed-simulator-impl.cc:312
ns3::DistributedSimulatorImpl::m_lookAhead
static Time m_lookAhead
Definition:
distributed-simulator-impl.h:151
ns3::DistributedSimulatorImpl::m_currentTs
uint64_t m_currentTs
Definition:
distributed-simulator-impl.h:141
ns3::DistributedSimulatorImpl::GetSystemId
virtual uint32_t GetSystemId(void) const
Definition:
distributed-simulator-impl.cc:411
ns3::DistributedSimulatorImpl::m_unscheduledEvents
int m_unscheduledEvents
Definition:
distributed-simulator-impl.h:145
ns3::DistributedSimulatorImpl::GetContext
virtual uint32_t GetContext(void) const
Definition:
distributed-simulator-impl.cc:591
ns3::LbtsMessage
Structure used for all-reduce LBTS computation.
Definition:
distributed-simulator-impl.h:36
ns3::DistributedSimulatorImpl::CalculateLookAhead
void CalculateLookAhead(void)
Definition:
distributed-simulator-impl.cc:153
ns3::DistributedSimulatorImpl::Cancel
virtual void Cancel(const EventId &ev)
Definition:
distributed-simulator-impl.cc:540
ns3::DistributedSimulatorImpl::Next
Time Next(void) const
Definition:
distributed-simulator-impl.cc:325
ns3::ObjectFactory
instantiate subclasses of ns3::Object.
Definition:
object-factory.h:39
ns3::LbtsMessage::m_rxCount
uint32_t m_rxCount
Definition:
distributed-simulator-impl.h:85
ns3::EventImpl
a simulation event
Definition:
event-impl.h:39
ns3::DistributedSimulatorImpl::Schedule
virtual EventId Schedule(Time const &time, EventImpl *event)
Definition:
distributed-simulator-impl.cc:432
ns3::LbtsMessage::GetSmallestTime
Time GetSmallestTime()
Definition:
distributed-simulator-impl.cc:49
ns3::EventId
an identifier for simulation events.
Definition:
event-id.h:46
ns3::DistributedSimulatorImpl::m_uid
uint32_t m_uid
Definition:
distributed-simulator-impl.h:139
ns3::LbtsMessage::LbtsMessage
LbtsMessage(uint32_t rxc, uint32_t txc, uint32_t id, bool isFinished, const Time &t)
Definition:
distributed-simulator-impl.h:53
ns3::DistributedSimulatorImpl::m_globalFinished
bool m_globalFinished
Definition:
distributed-simulator-impl.h:137
ns3::DistributedSimulatorImpl::m_pLBTS
LbtsMessage * m_pLBTS
Definition:
distributed-simulator-impl.h:147
ns3::DistributedSimulatorImpl::m_myId
uint32_t m_myId
Definition:
distributed-simulator-impl.h:148
ns3::DistributedSimulatorImpl::Run
virtual void Run(void)
Definition:
distributed-simulator-impl.cc:331
ns3::DistributedSimulatorImpl::m_currentUid
uint32_t m_currentUid
Definition:
distributed-simulator-impl.h:140
ns3::DistributedSimulatorImpl::Stop
virtual void Stop(void)
Definition:
distributed-simulator-impl.cc:417
ns3::DistributedSimulatorImpl::IsLocalFinished
bool IsLocalFinished(void) const
Definition:
distributed-simulator-impl.cc:306
ns3::DistributedSimulatorImpl::IsFinished
virtual bool IsFinished(void) const
Definition:
distributed-simulator-impl.cc:300
ns3::TypeId
a unique identifier for an interface.
Definition:
type-id.h:49
ns3::SimulatorImpl
Definition:
simulator-impl.h:35
ns3::LbtsMessage::m_isFinished
bool m_isFinished
Definition:
distributed-simulator-impl.h:88
ns3::DistributedSimulatorImpl::IsExpired
virtual bool IsExpired(const EventId &ev) const
Definition:
distributed-simulator-impl.cc:549
src
mpi
model
distributed-simulator-impl.h
Generated on Sat Nov 16 2013 16:17:48 for ns-3 by
1.8.5