A Discrete-Event Network Simulator
API
show-progress.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2017 Lawrence Livermore National Laboratory
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: Gustavo Carneiro <gjc@inescporto.pt>
19  * Author: Peter D. Barnes, Jr. <pdbarnes@llnl.gov>
20  */
21 
22 
23 #ifndef SHOW_PROGRESS_H
24 #define SHOW_PROGRESS_H
25 
32 #include <iostream>
33 
34 #include "event-id.h"
35 #include "nstime.h"
36 #include "system-wall-clock-ms.h"
38 #include "time-printer.h"
39 
40 namespace ns3 {
41 
42 
96 {
97 public:
103  ShowProgress (const Time interval = Seconds (1.0),
104  std::ostream & os = std::cout);
105 
107  ~ShowProgress (void);
108 
113  void SetInterval (const Time interval);
114 
123  void SetTimePrinter (TimePrinter lp);
124 
129  void SetStream (std::ostream & os);
130 
136  void SetVerbose (bool verbose);
137 
138 private:
139 
144  void Start (void);
145 
150  void Stop (void);
151 
155  void ScheduleCheckProgress (void);
156 
163  void CheckProgress (void);
164 
169  void GiveFeedback (uint64_t nEvents, int64x64_t ratio, int64x64_t speed);
170 
175  static const int64x64_t HYSTERESIS;
180  static const int64x64_t MAXGAIN;
181 
188  uint64_t m_eventCount;
189 
191  std::ostream *m_os;
192  bool m_verbose;
193  uint64_t m_repCount;
194 
195 }; // class ShowProgress
196 
197 } // namespace ns3
198 
199 #endif /* SHOW_PROGRESS_H */
ns3::ShowProgress::~ShowProgress
~ShowProgress(void)
Destructor.
Definition: show-progress.cc:66
ns3::ShowProgress::Start
void Start(void)
Start the elapsed wallclock timestamp and print the start time.
Definition: show-progress.cc:280
event-id.h
ns3::EventId declarations.
ns3::ShowProgress::m_eventCount
uint64_t m_eventCount
Simulator event count.
Definition: show-progress.h:188
ns3::EventId
An identifier for simulation events.
Definition: event-id.h:54
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::ShowProgress::Stop
void Stop(void)
Stop the elapsed wallclock timestamp and print the total elapsed time.
Definition: show-progress.cc:288
ns3::SystemWallClockMs
Measure elapsed wall clock time in milliseconds.
Definition: system-wall-clock-ms.h:54
ns3::ShowProgress::m_elapsed
Time m_elapsed
Total elapsed wallclock time since last update.
Definition: show-progress.h:184
ns3::ShowProgress::m_printer
TimePrinter m_printer
The TimePrinter to use.
Definition: show-progress.h:190
ns3::int64x64_t
High precision numerical type, implementing Q64.64 fixed precision.
Definition: int64x64-128.h:46
ns3::ShowProgress::m_timer
SystemWallClockMs m_timer
Wallclock timer.
Definition: show-progress.h:182
ns3::ShowProgress::MAXGAIN
static const int64x64_t MAXGAIN
Maximum growth factor.
Definition: show-progress.h:180
ns3::ShowProgress::m_os
std::ostream * m_os
The output stream to use.
Definition: show-progress.h:191
ns3::ShowProgress::GiveFeedback
void GiveFeedback(uint64_t nEvents, int64x64_t ratio, int64x64_t speed)
Show execution progress.
Definition: show-progress.cc:119
ns3::ShowProgress::SetVerbose
void SetVerbose(bool verbose)
Set verbose mode to print real and virtual time intervals.
Definition: show-progress.cc:97
system-wall-clock-timestamp.h
ns3::SystemWallClockTimestamp declaration.
ns3::SystemWallClockTimestamp
Utility class to record the difference between two wall-clock times.
Definition: system-wall-clock-timestamp.h:40
system-wall-clock-ms.h
ns3::SystemWallClockMs declaration.
ns3::ShowProgress::m_event
EventId m_event
The next progress event.
Definition: show-progress.h:187
time-printer.h
Declaration of ns3::TimePrinter function pointer type and ns3::DefaultTimePrinter function.
ns3::ShowProgress::m_interval
Time m_interval
The target update interval, in wallclock time.
Definition: show-progress.h:185
ns3::ShowProgress::SetStream
void SetStream(std::ostream &os)
Set the output stream to show progress on.
Definition: show-progress.cc:104
verbose
bool verbose
Definition: openflow-switch.cc:50
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::ShowProgress::m_verbose
bool m_verbose
Verbose mode flag.
Definition: show-progress.h:192
ns3::ShowProgress::m_vtime
Time m_vtime
The virtual time interval.
Definition: show-progress.h:186
ns3::ShowProgress::SetInterval
void SetInterval(const Time interval)
Set the target update interval, in wallclock time.
Definition: show-progress.cc:73
ns3::ShowProgress::HYSTERESIS
static const int64x64_t HYSTERESIS
Hysteresis factor.
Definition: show-progress.h:175
ns3::Seconds
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1289
ns3::TimePrinter
void(* TimePrinter)(std::ostream &os)
Function signature for features requiring a time formatter, such as logging or ShowProgress.
Definition: time-printer.h:43
ns3::ShowProgress::SetTimePrinter
void SetTimePrinter(TimePrinter lp)
Set the TimePrinter function to be used to prepend progress messages with the simulation time.
Definition: show-progress.cc:90
ns3::ShowProgress
Periodically print a status message indicating simulator progress.
Definition: show-progress.h:96
nstime.h
Declaration of classes ns3::Time and ns3::TimeWithUnit, and the TimeValue implementation classes.
ns3::ShowProgress::CheckProgress
void CheckProgress(void)
Check on execution progress.
Definition: show-progress.cc:156
ns3::ShowProgress::ScheduleCheckProgress
void ScheduleCheckProgress(void)
Schedule the next CheckProgress.
Definition: show-progress.cc:110
ns3::ShowProgress::ShowProgress
ShowProgress(const Time interval=Seconds(1.0), std::ostream &os=std::cout)
Constructor.
Definition: show-progress.cc:46
ns3::ShowProgress::m_repCount
uint64_t m_repCount
Number of CheckProgress events.
Definition: show-progress.h:193
ns3::ShowProgress::m_stamp
SystemWallClockTimestamp m_stamp
Elapsed wallclock time.
Definition: show-progress.h:183