// Software Name : cppuprofile
// SPDX-FileCopyrightText: Copyright (c) 2022 Orange
// SPDX-License-Identifier: BSD-3-Clause
//
// This software is distributed under the BSD License;
// see the LICENSE file for more details.
//
// Author: Cédric CHEDALEUX <cedric.chedaleux@orange.com> et al.

#ifndef TIMER_H_
#define TIMER_H_

#include <chrono>
#include <functional>
#include <iostream>
#include <mutex>
#include <thread>

using namespace std;

class Timer
{
public:
    explicit Timer(int interval /* ms */ = 0);
    virtual ~Timer();

    void setTimeout(const function<void(void)>& timeout);
    void setInterval(int interval);
    void start();
    void stop();
    bool isRunning();

private:
    thread* m_th;
    bool m_running;
    int m_interval;
    std::mutex m_mutex;
    std::function<void(void)> m_timeout;
};

#endif // TIMER_H_