Should we add a utility like this to include/ts/util ?

class Throttle
{
public:
  Throttle(unsigned secondsBetween = 60);

  // Returns true the first time it's called, and if the time since the
last time it returned true is
  // more than secondsBetween seconds.
  //
  bool operator () ();

  // Returns the number of times the member operator has been called.
  //
  unsigned times() const;
};

void Error(...);

void foo(bool zwoop_ate_too_much_sushi)
{
    if (zwoop_ate_too_much_sushi) {
        static Throttle t;

        if (t()) {
            Error("Zwoop ate too much sushi %u times, make salmon an
endangered species", t.times());
        }
    }
}

Reply via email to