// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md
#pragma once
#include "Timer.hpp"
namespace sys
{
class TimerHandle : public Timer
{
public:
TimerHandle() noexcept = default;
explicit TimerHandle(Timer *timer) noexcept;
~TimerHandle() noexcept override;
TimerHandle(const TimerHandle &) = delete;
TimerHandle &operator=(const TimerHandle &) = delete;
TimerHandle(TimerHandle &&oth) noexcept;
TimerHandle &operator=(TimerHandle &&oth) noexcept;
bool isValid() const noexcept;
void reset(Timer *newTimer = nullptr) noexcept;
void start() override;
void restart(std::chrono::milliseconds newInterval) override;
void stop() override;
bool isActive() const noexcept override;
private:
Timer *timer = nullptr;
};
} // namespace sys