mirror of
https://github.com/PerMalmberg/libcron.git
synced 2025-04-22 00:13:01 -05:00
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <functional>
|
|
#include "CronData.h"
|
|
#include "CronSchedule.h"
|
|
#include <chrono>
|
|
#include <utility>
|
|
|
|
namespace libcron
|
|
{
|
|
class Task
|
|
{
|
|
public:
|
|
|
|
Task(std::string name, const CronSchedule schedule, std::function<void()> task)
|
|
: name(std::move(name)), schedule(std::move(schedule)), task(std::move(task))
|
|
{
|
|
}
|
|
|
|
void execute() const
|
|
{
|
|
task();
|
|
}
|
|
|
|
Task(const Task& other) = default;
|
|
|
|
Task& operator=(const Task&) = default;
|
|
|
|
bool calculate_next(std::chrono::system_clock::time_point from = std::chrono::system_clock::now());
|
|
|
|
bool operator>(const Task& other) const
|
|
{
|
|
return next_schedule > other.next_schedule;
|
|
}
|
|
|
|
bool is_expired(std::chrono::system_clock::time_point now = std::chrono::system_clock::now()) const;
|
|
|
|
std::chrono::system_clock::duration
|
|
time_until_expiry(std::chrono::system_clock::time_point now = std::chrono::system_clock::now()) const;
|
|
|
|
std::string get_name() const
|
|
{
|
|
return name;
|
|
}
|
|
|
|
std::string get_status(std::chrono::system_clock::time_point now) const;
|
|
|
|
private:
|
|
std::string name;
|
|
CronSchedule schedule;
|
|
std::chrono::system_clock::time_point next_schedule;
|
|
std::function<void()> task;
|
|
bool valid = false;
|
|
};
|
|
} |