A Discrete-Event Network Simulator
API
application.cc
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2006 Georgia Tech Research Corporation
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: George F. Riley<riley@ece.gatech.edu>
19  */
20 
21 // Implementation for ns3 Application base class.
22 // George F. Riley, Georgia Tech, Fall 2006
23 
24 #include "application.h"
25 #include "ns3/log.h"
26 #include "ns3/node.h"
27 #include "ns3/nstime.h"
28 #include "ns3/simulator.h"
29 
30 namespace ns3 {
31 
32 NS_LOG_COMPONENT_DEFINE ("Application");
33 
34 NS_OBJECT_ENSURE_REGISTERED (Application);
35 
36 // Application Methods
37 
38 TypeId
40 {
41  static TypeId tid = TypeId ("ns3::Application")
42  .SetParent<Object> ()
43  .SetGroupName("Network")
44  .AddAttribute ("StartTime", "Time at which the application will start",
45  TimeValue (Seconds (0.0)),
47  MakeTimeChecker ())
48  .AddAttribute ("StopTime", "Time at which the application will stop",
49  TimeValue (TimeStep (0)),
51  MakeTimeChecker ())
52  ;
53  return tid;
54 }
55 
56 // \brief Application Constructor
58 {
59  NS_LOG_FUNCTION (this);
60 }
61 
62 // \brief Application Destructor
64 {
65  NS_LOG_FUNCTION (this);
66 }
67 
68 void
70 {
71  NS_LOG_FUNCTION (this << start);
73 }
74 void
76 {
77  NS_LOG_FUNCTION (this << stop);
78  m_stopTime = stop;
79 }
80 
81 
82 void
84 {
85  NS_LOG_FUNCTION (this);
86  m_node = 0;
90 }
91 
92 void
94 {
95  NS_LOG_FUNCTION (this);
97  if (m_stopTime != TimeStep (0))
98  {
100  }
102 }
103 
105 {
106  NS_LOG_FUNCTION (this);
107  return m_node;
108 }
109 
110 void
112 {
113  NS_LOG_FUNCTION (this);
114  m_node = node;
115 }
116 
117 // Protected methods
118 // StartApp and StopApp will likely be overridden by application subclasses
120 { // Provide null functionality in case subclass is not interested
121  NS_LOG_FUNCTION (this);
122 }
123 
125 { // Provide null functionality in case subclass is not interested
126  NS_LOG_FUNCTION (this);
127 }
128 
129 } // namespace ns3
130 
131 
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Definition: simulator.h:557
virtual void DoInitialize(void)
Initialize() implementation.
Definition: object.cc:353
void SetStopTime(Time stop)
Specify application stop time.
Definition: application.cc:75
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:45
static TypeId GetTypeId(void)
Get the type ID.
Definition: application.cc:39
def start()
Definition: core.py:1855
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
virtual void DoDispose(void)
Destructor implementation.
Definition: object.cc:346
virtual void DoInitialize(void)
Initialize() implementation.
Definition: application.cc:93
AttributeValue implementation for Time.
Definition: nstime.h:1353
virtual void StartApplication(void)
Application specific startup code.
Definition: application.cc:119
Time m_stopTime
The simulation time that the application will end.
Definition: application.h:150
Ptr< Node > GetNode() const
Definition: application.cc:104
virtual void DoDispose(void)
Destructor implementation.
Definition: application.cc:83
Ptr< Node > m_node
The node that this application is installed on.
Definition: application.h:148
Every class exported by the ns3 library is enclosed in the ns3 namespace.
EventId m_startEvent
The event that will fire at m_startTime to start the application.
Definition: application.h:151
void SetNode(Ptr< Node > node)
Definition: application.cc:111
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
Definition: nstime.h:1354
virtual void StopApplication(void)
Application specific shutdown code.
Definition: application.cc:124
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1289
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Definition: event-id.cc:53
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
Definition: time.cc:533
EventId m_stopEvent
The event that will fire at m_stopTime to end the application.
Definition: application.h:152
A base class which provides memory management and object aggregation.
Definition: object.h:87
Time m_startTime
The simulation time that the application will start.
Definition: application.h:149
a unique identifier for an interface.
Definition: type-id.h:58
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:923
void SetStartTime(Time start)
Specify application start time.
Definition: application.cc:69
virtual ~Application()
Definition: application.cc:63