1
0
mirror of https://github.com/Zygo/bees.git synced 2025-05-17 21:35:45 +02:00
Zygo Blaxell 6cc9b267ef crucible: time: fix uninitialized member
Found by valgrind.  It was mostly harmless because the range of
usable values is limited by m_burst (which was initialized) and 0.

Signed-off-by: Zygo Blaxell <bees@furryterror.org>
2017-01-16 22:02:14 -05:00

51 lines
965 B
C++

#ifndef CRUCIBLE_TIME_H
#define CRUCIBLE_TIME_H
#include "crucible/error.h"
#include <chrono>
#include <mutex>
#include <ostream>
namespace crucible {
double nanosleep(double secs);
class Timer {
chrono::high_resolution_clock::time_point m_start;
public:
Timer();
double age() const;
double report(int precision = 1000) const;
void reset();
void set(const chrono::high_resolution_clock::time_point &start);
void set(double delta);
double lap();
bool operator<(double d) const;
bool operator>(double d) const;
};
ostream &operator<<(ostream &os, const Timer &t);
class RateLimiter {
Timer m_timer;
double m_rate;
double m_burst;
double m_tokens = 0.0;
mutex m_mutex;
void update_tokens();
RateLimiter() = delete;
public:
RateLimiter(double rate, double burst);
RateLimiter(double rate);
void sleep_for(double cost = 1.0);
bool is_ready();
void borrow(double cost = 1.0);
};
}
#endif // CRUCIBLE_TIME_H