A Discrete-Event Network Simulator
API
simulator-impl.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2005,2006 INRIA
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
18  */
19 
20 #ifndef SIMULATOR_IMPL_H
21 #define SIMULATOR_IMPL_H
22 
23 #include "event-id.h"
24 #include "event-impl.h"
25 #include "nstime.h"
26 #include "object-factory.h"
27 #include "object.h"
28 #include "ptr.h"
29 
36 namespace ns3
37 {
38 
39 class Scheduler;
40 
48 class SimulatorImpl : public Object
49 {
50  public:
55  static TypeId GetTypeId();
56 
58  virtual void Destroy() = 0;
60  virtual bool IsFinished() const = 0;
62  virtual void Stop() = 0;
64  virtual EventId Stop(const Time& delay) = 0;
66  virtual EventId Schedule(const Time& delay, EventImpl* event) = 0;
68  virtual void ScheduleWithContext(uint32_t context, const Time& delay, EventImpl* event) = 0;
70  virtual EventId ScheduleNow(EventImpl* event) = 0;
72  virtual EventId ScheduleDestroy(EventImpl* event) = 0;
74  virtual void Remove(const EventId& id) = 0;
76  virtual void Cancel(const EventId& id) = 0;
78  virtual bool IsExpired(const EventId& id) const = 0;
80  virtual void Run() = 0;
82  virtual Time Now() const = 0;
84  virtual Time GetDelayLeft(const EventId& id) const = 0;
86  virtual Time GetMaximumSimulationTime() const = 0;
96  virtual void SetScheduler(ObjectFactory schedulerFactory) = 0;
98  virtual uint32_t GetSystemId() const = 0;
100  virtual uint32_t GetContext() const = 0;
102  virtual uint64_t GetEventCount() const = 0;
103 
109  virtual void PreEventHook(const EventId& id){};
110 };
111 
112 } // namespace ns3
113 
114 #endif /* SIMULATOR_IMPL_H */
An identifier for simulation events.
Definition: event-id.h:55
A simulation event.
Definition: event-impl.h:46
Instantiate subclasses of ns3::Object.
A base class which provides memory management and object aggregation.
Definition: object.h:89
The SimulatorImpl base class.
virtual EventId ScheduleDestroy(EventImpl *event)=0
Schedule an event to run at the end of the simulation, after the Stop() time or condition has been re...
virtual Time GetDelayLeft(const EventId &id) const =0
Get the remaining time until this event will execute.
virtual void SetScheduler(ObjectFactory schedulerFactory)=0
Set the Scheduler to be used to manage the event list.
virtual uint32_t GetSystemId() const =0
Get the system id of this simulator.
virtual void Run()=0
Run the simulation.
virtual EventId Schedule(const Time &delay, EventImpl *event)=0
Schedule a future event execution (in the same context).
virtual void Destroy()=0
Execute the events scheduled with ScheduleDestroy().
virtual bool IsExpired(const EventId &id) const =0
Check if an event has already run or been cancelled.
virtual void Remove(const EventId &id)=0
Remove an event from the event list.
virtual Time GetMaximumSimulationTime() const =0
Get the maximum representable simulation time.
virtual void ScheduleWithContext(uint32_t context, const Time &delay, EventImpl *event)=0
Schedule a future event execution (in a different context).
virtual void PreEventHook(const EventId &id)
Hook called before processing each event.
virtual EventId ScheduleNow(EventImpl *event)=0
Schedule an event to run at the current virtual time.
virtual Time Now() const =0
Return the current simulation virtual time.
virtual bool IsFinished() const =0
Check if the simulation should finish.
virtual uint64_t GetEventCount() const =0
Get the number of events executed.
virtual void Cancel(const EventId &id)=0
Set the cancel bit on this event: the event's associated function will not be invoked when it expires...
virtual uint32_t GetContext() const =0
Get the current simulation context.
virtual EventId Stop(const Time &delay)=0
Schedule the time delay until the Simulator should stop.
virtual void Stop()=0
Tell the Simulator the calling event should be the last one executed.
static TypeId GetTypeId()
Get the registered TypeId for this class.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
a unique identifier for an interface.
Definition: type-id.h:59
ns3::EventId declarations.
ns3::EventImpl declarations.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Declaration of classes ns3::Time and ns3::TimeWithUnit, and the TimeValue implementation classes.
ns3::ObjectFactory class declaration.
ns3::Object class declaration, which is the root of the Object hierarchy and Aggregation.
ns3::Ptr smart pointer declaration and implementation.