34 lines
808 B
C
34 lines
808 B
C
|
#ifndef __AMASS_LEAKTRACER_H__
|
||
|
#define __AMASS_LEAKTRACER_H__
|
||
|
|
||
|
#include <chrono>
|
||
|
#include <string>
|
||
|
#include <thread>
|
||
|
|
||
|
class LeakTracer {
|
||
|
public:
|
||
|
LeakTracer(const std::string &path, const std::string &applicationName);
|
||
|
~LeakTracer();
|
||
|
|
||
|
template <class Rep, class Period>
|
||
|
void start(const std::chrono::duration<Rep, Period> &intervals) {
|
||
|
if (m_exit) {
|
||
|
m_exit = false;
|
||
|
m_thread = std::thread(&LeakTracer::run, this);
|
||
|
}
|
||
|
m_intervals = std::chrono::duration_cast<std::chrono::milliseconds>(intervals);
|
||
|
}
|
||
|
|
||
|
void stop();
|
||
|
|
||
|
protected:
|
||
|
void run();
|
||
|
|
||
|
private:
|
||
|
bool m_exit = true;
|
||
|
std::string m_path;
|
||
|
std::string m_applicationName;
|
||
|
std::chrono::milliseconds m_intervals;
|
||
|
std::thread m_thread;
|
||
|
};
|
||
|
#endif // __AMASS_LEAKTRACER_H__
|