Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
JTimekeeper.cc File Reference

Example program to test JEEP::JTimekeeper class. More...

#include <string>
#include <iostream>
#include <iomanip>
#include "Jeep/JTimekeeper.hh"
#include "JSystem/JTime.hh"
#include "Jeep/JPrint.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char *argv[])
 

Detailed Description

Example program to test JEEP::JTimekeeper class.

Author
mdejong

Definition in file JTimekeeper.cc.

Function Documentation

◆ main()

int main ( int argc,
char * argv[] )

Definition at line 18 of file JTimekeeper.cc.

19{
20 using namespace std;
21
22 int intervalTime_ms;
23 int totalTime_s;
24 int debug;
25
26 try {
27
28 JParser<> zap;
29
30 zap['t'] = make_field(intervalTime_ms) = 100;
31 zap['s'] = make_field(totalTime_s) = 2;
32 zap['d'] = make_field(debug) = 1;
33
34 zap(argc, argv);
35 }
36 catch(const exception &error) {
37 FATAL(error.what() << endl);
38 }
39
40
41 using namespace JPP;
42
43 if (intervalTime_ms <= 0) { FATAL("interval time [ms] " << intervalTime_ms << " < 0." << endl); }
44 if (totalTime_s <= 0) { FATAL("total time [s] " << totalTime_s << " < 0." << endl); }
45
47
48 cout << "hit <return> to interrupt" << endl;
49
50 JTimekeeper clock;
51
52 clock.setInterval(intervalTime_ms * 1000);
53 clock.reset();
54
55 const long long int t0 = getLocalTime();
56
57 string buffer;
58 int numberOfInterrupts = 0;
59
60 for (int i = 0; i < 1000 * totalTime_s / intervalTime_ms; ) {
61
62 DEBUG(setw(5) << i << rewind);
63
64 mask.set(STDIN_FILENO); // hit <return> to interrupt wait(..)
65
66 if (clock.wait(mask)) {
67
68 getline(cin, buffer); // flush input
69
70 ++numberOfInterrupts;
71
72 } else {
73
74 ++i;
75 }
76 }
77 NOTICE(endl);
78
79 const long long int t1 = getLocalTime();
80
81 NOTICE("Number of interrupts " << setw(8) << right << numberOfInterrupts << endl);
82 NOTICE("Total delay [ms] " << setw(8) << right << clock.getDelay() / 1000 << endl);
83 NOTICE("Elapsed time [ms] " << setw(8) << right << (t1 - t0) / 1000 << endl);
84
85 if (numberOfInterrupts != 0) {
86 NOTICE("Time per interrupt [us] " << setw(8) << right << (t1 - t0 - clock.getDelay()) / numberOfInterrupts << endl);
87 }
88}
std::ostream & rewind(std::ostream &out)
Rewind character.
Definition JManip.hh:222
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define NOTICE(A)
Definition JMessage.hh:64
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Time keeper.
long long int getDelay() const
Get total delay time.
void setInterval(const long long int interval_us)
Set interval time.
void wait() const
Wait until the number of time intervals has elapsed since the last call to the reset method.
void reset(const long long int t0)
Reset time.
Auxiliary class for method select.
void set(const int file_descriptor)
Set file descriptor.
Utility class to parse command line options.
Definition JParser.hh:1698
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
Definition JString.hh:478
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).