Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JLOGGER::JMessageScheduler Class Reference

Message logger with time scheduler. More...

#include <JMessageScheduler.hh>

Inheritance diagram for JLOGGER::JMessageScheduler:
JLOGGER::JMessageLogger JEEP::JTimekeeper JLOGGER::JLogger

Public Types

enum  JLevel_t {
  OFF = -1 , ERROR = 0 , STATUS = 0 , WARNING = 1 ,
  NOTICE = 2 , DEBUG = 3
}
 
typedef std::string JMessage_t
 

Public Member Functions

 JMessageScheduler ()
 Default constructor.
 
 JMessageScheduler (const JMessageLogger &logger, const JTimekeeper &timer)
 Constructor.
 
void setCredit (const int credit)
 Set credit.
 
virtual void typeout (const std::string &tag, const std::string &message) override
 Report message.
 
void reset ()
 Reset.
 
void reset (JLogger *__logger=NULL)
 Reset logger.
 
JLevel_t getLevel ()
 Get debug level.
 
void setLevel (const int __level)
 Set debug level.
 
void setLevel (const JLevel_t __level)
 Set debug level.
 
bool is_valid () const
 Check validity of logger object.
 
void debug (const JMessage_t &message)
 
void warning (const JMessage_t &message)
 
void error (const JMessage_t &message)
 
void notice (const JMessage_t &message)
 
void status (const JMessage_t &message)
 
JSYNCHRONIZATION::JMutexmutex ()
 Provides internal lock object.
 
long long int getInterval () const
 Get interval time.
 
long long int getDelay () const
 Get total delay time.
 
void setInterval (const long long int interval_us)
 Set interval time.
 
void reset (const long long int t0)
 Reset time.
 
bool operator() () const
 Check whether the number of time intervals has elapsed since the last call to the reset method.
 
void wait () const
 Wait until the number of time intervals has elapsed since the last call to the reset method.
 
bool wait (JFileDescriptorMask &mask) const
 Wait until the number of time intervals has elapsed since the last call to the reset method or input data have become available on one of the file descriptors in the given mask.
 

Protected Member Functions

void typeout (const JLevel_t __level, const char *__prefix, const JMessage_t &__message)
 Report message.
 

Protected Attributes

int credit
 
JSharedPointer< JLoggerlogger
 
std::string host
 
std::string name
 
JLevel_t level
 
long long int interval
 interval time [us]
 

Private Attributes

JSYNCHRONIZATION::JMutex m_mutex
 
long long int t0
 t0 of elapsed time [us]
 
long long int total_delay
 total delay time [us]
 
long long int counter
 interval counter
 

Detailed Description

Message logger with time scheduler.

Messages will only be reported when the elapsed time since last message exceeds the specified time interval. The first message is always reported.

Definition at line 25 of file JMessageScheduler.hh.

Member Typedef Documentation

◆ JMessage_t

std::string JLOGGER::JMessageLogger::JMessage_t
inherited

Definition at line 67 of file JMessageLogger.hh.

Member Enumeration Documentation

◆ JLevel_t

Enumerator
OFF 

No logging of messages.

ERROR 

Error; always logged.

STATUS 

Status; always logged.

WARNING 

Warning.

NOTICE 

Notice.

DEBUG 

Debug.

Definition at line 58 of file JMessageLogger.hh.

58 {
59 OFF = -1, //!< No logging of messages
60 ERROR = 0, //!< Error; always logged
61 STATUS = 0, //!< Status; always logged
62 WARNING = 1, //!< Warning
63 NOTICE = 2, //!< Notice
64 DEBUG = 3 //!< Debug
65 };
@ STATUS
Status; always logged.
@ ERROR
Error; always logged.
@ OFF
No logging of messages.

Constructor & Destructor Documentation

◆ JMessageScheduler() [1/2]

JLOGGER::JMessageScheduler::JMessageScheduler ( )
inline

Default constructor.

Definition at line 33 of file JMessageScheduler.hh.

33 :
35 JTimekeeper (),
36 credit (0)
37 {}
JTimekeeper()
Default constructor.
JMessageLogger()
Default constructor.

◆ JMessageScheduler() [2/2]

JLOGGER::JMessageScheduler::JMessageScheduler ( const JMessageLogger & logger,
const JTimekeeper & timer )
inline

Constructor.

The time is reset so that the first message is sent any way.

Parameters
loggerlogger
timertimer

Definition at line 47 of file JMessageScheduler.hh.

48 :
50 JTimekeeper (timer),
51 credit (1)
52 {
54 }
void reset()
Reset time.
JSharedPointer< JLogger > logger

Member Function Documentation

◆ setCredit()

void JLOGGER::JMessageScheduler::setCredit ( const int credit)
inline

Set credit.

Note that the maximal number of messages reported per interval time is equal to the credit which is set once at a time.

Parameters
creditcredit

Definition at line 64 of file JMessageScheduler.hh.

65 {
66 this->credit = credit;
67 }

◆ typeout() [1/2]

virtual void JLOGGER::JMessageScheduler::typeout ( const std::string & tag,
const std::string & message )
inlineoverridevirtual

Report message.

Parameters
tagtag
messagemessage

Reimplemented from JLOGGER::JMessageLogger.

Definition at line 75 of file JMessageScheduler.hh.

77 {
78 if (JTimekeeper::operator()()) {
79 reset();
80 }
81
82 if (credit != 0) {
83
84 JMessageLogger::typeout(tag, message);
85
86 --credit;
87 }
88 }
virtual void typeout(const std::string &tag, const std::string &message) override
Report message.

◆ reset() [1/3]

void JLOGGER::JMessageScheduler::reset ( )
inline

Reset.

Definition at line 94 of file JMessageScheduler.hh.

95 {
97
98 credit = 1;
99 }

◆ reset() [2/3]

void JLOGGER::JMessageLogger::reset ( JLogger * __logger = NULL)
inlineinherited

Reset logger.

Parameters
__loggerpointer to logger

Definition at line 106 of file JMessageLogger.hh.

107 {
108 logger.reset(__logger);
109 }

◆ getLevel()

JLevel_t JLOGGER::JMessageLogger::getLevel ( )
inlineinherited

Get debug level.

Returns
debug level

Definition at line 117 of file JMessageLogger.hh.

118 {
119 return level;
120 }

◆ setLevel() [1/2]

void JLOGGER::JMessageLogger::setLevel ( const int __level)
inlineinherited

Set debug level.

Parameters
__leveldebug level

Definition at line 128 of file JMessageLogger.hh.

129 {
130 if (__level < 0)
131 level = OFF;
132 else if (__level == 0)
133 level = ERROR;
134 else if (__level == 1)
135 level = WARNING;
136 else if (__level == 2)
137 level = NOTICE;
138 else
139 level = DEBUG;
140 }

◆ setLevel() [2/2]

void JLOGGER::JMessageLogger::setLevel ( const JLevel_t __level)
inlineinherited

Set debug level.

Parameters
__leveldebug level

Definition at line 148 of file JMessageLogger.hh.

149 {
150 level = __level;
151 }

◆ is_valid()

bool JLOGGER::JMessageLogger::is_valid ( ) const
inlineinherited

Check validity of logger object.

This operator returns the state of the logger object. The object is valid if the logger object is ready for use, else the object is in-valid. In case the object is in-valid, no messages will be reported.

Returns
true if logger ready for use; else false

Definition at line 163 of file JMessageLogger.hh.

164 {
165 return logger.is_valid();
166 }

◆ typeout() [2/2]

void JLOGGER::JMessageLogger::typeout ( const JLevel_t __level,
const char * __prefix,
const JMessage_t & __message )
inlineprotectedinherited

Report message.

Parameters
__levellevel
__prefixprefix
__messagemessage

Definition at line 200 of file JMessageLogger.hh.

203 {
204 if (is_valid() && __level <= level && !__message.empty()) {
205
206 JMessage_t message;
207
208 message += getDateAndTime();
209
210 message += " ";
211 message += host;
212
213 message += " ";
214 message += name;
215
216 message += " ";
217 message += __prefix;
218
219 message += " ";
220 message += __message;
221
222 typeout(MESSAGE_TAG, message);
223 }
224 }
bool is_valid() const
Check validity of logger object.
static const std::string MESSAGE_TAG
Message logging tag.

◆ debug()

void JLOGGER::JMessageLogger::debug ( const JMessage_t & message)
inlineinherited

Definition at line 184 of file JMessageLogger.hh.

184{ TYPEOUT(DEBUG, message); }
#define TYPEOUT(LEVEL, MESSAGE)

◆ warning()

void JLOGGER::JMessageLogger::warning ( const JMessage_t & message)
inlineinherited

Definition at line 185 of file JMessageLogger.hh.

185{ TYPEOUT(WARNING, message); }

◆ error()

void JLOGGER::JMessageLogger::error ( const JMessage_t & message)
inlineinherited

Definition at line 186 of file JMessageLogger.hh.

186{ TYPEOUT(ERROR, message); }

◆ notice()

void JLOGGER::JMessageLogger::notice ( const JMessage_t & message)
inlineinherited

Definition at line 187 of file JMessageLogger.hh.

187{ TYPEOUT(NOTICE, message); }

◆ status()

void JLOGGER::JMessageLogger::status ( const JMessage_t & message)
inlineinherited

Definition at line 188 of file JMessageLogger.hh.

188{ TYPEOUT(STATUS, message); }

◆ mutex()

JSYNCHRONIZATION::JMutex & JLOGGER::JLogger::mutex ( )
inlineinherited

Provides internal lock object.

Returns
reference to the internal mutex object.

Definition at line 44 of file JLogger.hh.

45 {
46 return m_mutex;
47 }
JSYNCHRONIZATION::JMutex m_mutex
Definition JLogger.hh:51

◆ getInterval()

long long int JEEP::JTimekeeper::getInterval ( ) const
inlineinherited

Get interval time.

Returns
interval time [us]

Definition at line 67 of file JTimekeeper.hh.

68 {
69 return interval;
70 }
long long int interval
interval time [us]

◆ getDelay()

long long int JEEP::JTimekeeper::getDelay ( ) const
inlineinherited

Get total delay time.

Returns
delay time [us]

Definition at line 78 of file JTimekeeper.hh.

79 {
80 return total_delay;
81 }
long long int total_delay
total delay time [us]

◆ setInterval()

void JEEP::JTimekeeper::setInterval ( const long long int interval_us)
inlineinherited

Set interval time.

Parameters
interval_usinterval time [us]

Definition at line 89 of file JTimekeeper.hh.

90 {
91 interval = interval_us;
92 }

◆ reset() [3/3]

void JEEP::JTimekeeper::reset ( const long long int t0)
inlineinherited

Reset time.

Parameters
t0time [us]

Definition at line 100 of file JTimekeeper.hh.

101 {
102 this->t0 = t0;
103 this->counter = 0;
104 this->total_delay = 0;
105 }
long long int t0
t0 of elapsed time [us]
long long int counter
interval counter

◆ operator()()

bool JEEP::JTimekeeper::operator() ( ) const
inlineinherited

Check whether the number of time intervals has elapsed since the last call to the reset method.

The number of intervals is equal to the number of calls this method returned true since the last call to the reset method.

Returns
true if elapsed time exceeds interval time; else false

Definition at line 125 of file JTimekeeper.hh.

126 {
127 if (getLocalTime() >= t0 + (counter + 1) * interval) {
128
129 ++counter;
130
131 return true;
132
133 } else
134
135 return false;
136 }

◆ wait() [1/2]

void JEEP::JTimekeeper::wait ( ) const
inlineinherited

Wait until the number of time intervals has elapsed since the last call to the reset method.

The number of intervals is equal to the number of calls to the method wait since the last call to the reset method.

Definition at line 145 of file JTimekeeper.hh.

146 {
147 static const useconds_t MAXIMAL_SLEEP_TIME_US = std::numeric_limits<useconds_t>::max();
148
149 long long int delay = t0 + (counter + 1) * interval - getLocalTime(); // [us]
150
151 while (delay > MAXIMAL_SLEEP_TIME_US && usleep(MAXIMAL_SLEEP_TIME_US) == 0) {
152
153 total_delay += MAXIMAL_SLEEP_TIME_US;
154 delay -= MAXIMAL_SLEEP_TIME_US;
155 }
156
157 if (delay > 0 && usleep((useconds_t) delay) == 0) {
158 total_delay += delay;
159 }
160
161 ++counter;
162 }

◆ wait() [2/2]

bool JEEP::JTimekeeper::wait ( JFileDescriptorMask & mask) const
inlineinherited

Wait until the number of time intervals has elapsed since the last call to the reset method or input data have become available on one of the file descriptors in the given mask.

The number of intervals is equal to the number of calls to the method wait since the last call to the reset method. Note that the mask is overwritten following a select call.

Parameters
maskinput mask
Returns
true if interrupted; else false

Definition at line 176 of file JTimekeeper.hh.

177 {
178 long long int t1 = getLocalTime();
179 long long int delay = t0 + (counter + 1) * interval - t1; // [us]
180
181 // ensure one select call for each call to this method.
182
183 if (delay < 0) {
184 delay = 0;
185 }
186
187 JTimeval timeout((int) (delay/1000000), (int) (delay%1000000));
188
189 if (mask.in_avail(timeout)) {
190
191 total_delay += getLocalTime() - t1;
192
193 return true;
194
195 } else {
196
197 ++counter;
198
199 total_delay += delay;
200
201 return false;
202 }
203 }

Member Data Documentation

◆ credit

int JLOGGER::JMessageScheduler::credit
protected

Definition at line 102 of file JMessageScheduler.hh.

◆ logger

JSharedPointer<JLogger> JLOGGER::JMessageLogger::logger
protectedinherited

Definition at line 227 of file JMessageLogger.hh.

◆ host

std::string JLOGGER::JMessageLogger::host
protectedinherited

Definition at line 228 of file JMessageLogger.hh.

◆ name

std::string JLOGGER::JMessageLogger::name
protectedinherited

Definition at line 229 of file JMessageLogger.hh.

◆ level

JLevel_t JLOGGER::JMessageLogger::level
protectedinherited

Definition at line 230 of file JMessageLogger.hh.

◆ m_mutex

JSYNCHRONIZATION::JMutex JLOGGER::JLogger::m_mutex
privateinherited

Definition at line 51 of file JLogger.hh.

◆ interval

long long int JEEP::JTimekeeper::interval
protectedinherited

interval time [us]

Definition at line 207 of file JTimekeeper.hh.

◆ t0

long long int JEEP::JTimekeeper::t0
mutableprivateinherited

t0 of elapsed time [us]

Definition at line 210 of file JTimekeeper.hh.

◆ total_delay

long long int JEEP::JTimekeeper::total_delay
mutableprivateinherited

total delay time [us]

Definition at line 211 of file JTimekeeper.hh.

◆ counter

long long int JEEP::JTimekeeper::counter
mutableprivateinherited

interval counter

Definition at line 212 of file JTimekeeper.hh.


The documentation for this class was generated from the following file: