template<typename... TcheckArgs>
class LSST::M1M3::SS::LimitTrigger< TcheckArgs >
Abstract interface class for limiting some action to predefined execution.
This class shall be used when a large number of messages (violation of some criteria) can be send. The class can limit number of occurrences it will actually run the execute code.
- Template Parameters
-
TcheckArgs | arguments passed to check and execute methods |
Example:
class MyLimitTrigger: public LimitTrigger<const char*> {
public:
MyLimitTrigger(int minOccurence) {
_minOccurence = minOccurence;
}
bool trigger()
override {
return ++_counter >= _minOccurence; }
void execute(
const char *msg)
override { std::cout <<
"Executed with
message " << msg << std::endl; }
void reset()
override { _counter = 0; }
private:
int _counter;
int _minOccurence;
};
....
MyLimitTrigger limitTrigger(10);
....
limitTrigger.check();
....
virtual void reset()=0
Pure virtual placeholder to reset any internal variables.
virtual void execute(TcheckArgs... args)=0
Pure virtual placeholder for executing limited action.
virtual bool trigger()=0
Pure virtual placeholder for check if triggering criteria are met.