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 "nstime.h"
35 #include "system-wall-clock-ms.h"
36 
37 namespace ns3 {
38 
39 
70 {
71 public:
77  ShowProgress (const Time interval = Seconds (1.0),
78  std::ostream & os = std::cout);
79 
84  void SetInterval (const Time interval);
85 
94  void SetTimePrinter (TimePrinter lp);
95 
100  void SetStream (std::ostream & os);
101 
103  void Start (void);
104 
110  void SetVerbose (bool verbose);
111 
112 
113 private:
115  void Feedback (void);
116 
121  const int64x64_t HYSTERESIS = 1.2;
126  const int64x64_t MAXGAIN = 2.0;
127 
132  uint64_t m_eventCount;
133 
135  std::ostream *m_os;
136  bool m_verbose;
137  uint64_t m_repCount;
138 
139 }; // class ShowProgress
140 
141 } // namespace ns3
142 
143 #endif /* SHOW_PROGRESS_H */
bool m_verbose
Verbose mode flag.
EventId m_event
The next progress event.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:102
ShowProgress(const Time interval=Seconds(1.0), std::ostream &os=std::cout)
Constructor.
Periodically print a status message indicating simulator progress.
Definition: show-progress.h:69
SystemWallClockMs m_timer
Wallclock timer.
High precision numerical type, implementing Q64.64 fixed precision.
Definition: int64x64-128.h:45
Time m_interval
The target update interval, in wallclock time.
void SetVerbose(bool verbose)
Set verbose mode to print real and virtual time intervals.
void SetStream(std::ostream &os)
Set the output stream to show progress on.
Measure elapsed wall clock time in milliseconds.
ns3::SystemWallClockMs declaration.
std::ostream * m_os
The output stream to use.
const int64x64_t MAXGAIN
Maximum growth factor.
const int64x64_t HYSTERESIS
Hysteresis factor.
void SetInterval(const Time interval)
Set the target update interval, in wallclock time.
Declaration of classes ns3::Time and ns3::TimeWithUnit, and the TimeValue implementation classes...
uint64_t m_eventCount
Simulator event count.
void(* TimePrinter)(std::ostream &os)
Function signature for features requiring a time formatter, such as logging or ShowProgress.
Definition: time-printer.h:43
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void Start(void)
Start the progress timer.
void SetTimePrinter(TimePrinter lp)
Set the TimePrinter function to be used to prepend progress messages with the simulation time...
TimePrinter m_printer
The TimePrinter to use.
An identifier for simulation events.
Definition: event-id.h:53
Time m_vtime
The virtual time interval.
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1062
void Feedback(void)
Show execution progress.
uint64_t m_repCount
Count of progress lines printed.
bool verbose