mirror of
https://github.com/PerMalmberg/libcron.git
synced 2025-07-09 20:19:28 -05:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
de143e8b8e | |||
aa3d4368d5 | |||
7c7d290792 |
15
README.md
15
README.md
@ -6,10 +6,16 @@ A C++ scheduling library using cron formatting.
|
||||
Libcron offers an easy to use API to add callbacks with corresponding cron-formatted strings:
|
||||
|
||||
```
|
||||
#include <libcron/Cron.h>
|
||||
#include <libcron/CronData.h>
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
libcron::Cron cron;
|
||||
|
||||
cron.add_schedule("Hello from Cron", "* * * * * ?", [=](auto&) {
|
||||
std::cout << "Hello from libcron!" std::endl;
|
||||
std::cout << "Hello from libcron!" << std::endl;
|
||||
});
|
||||
```
|
||||
|
||||
@ -19,7 +25,7 @@ To trigger the execution of callbacks, one must call `libcron::Cron::tick` at le
|
||||
while(true)
|
||||
{
|
||||
cron.tick();
|
||||
std::this_thread::sleep_for(500mS);
|
||||
std::this_thread::sleep_for(500ms);
|
||||
}
|
||||
```
|
||||
|
||||
@ -188,11 +194,16 @@ the '?'-character to ensure that it is not possible to specify a statement which
|
||||
|Expression | Meaning
|
||||
| --- | --- |
|
||||
| * * * * * ? | Every second
|
||||
| 0 * * * * ? | Every minute
|
||||
| 0 0 12 * * MON-FRI | Every Weekday at noon
|
||||
| 0 0 12 1/2 * ? | Every 2 days, starting on the 1st at noon
|
||||
| 0 0 */12 ? * * | Every twelve hours
|
||||
| @hourly | Every hour
|
||||
|
||||
Note that the expression formatting has a part for seconds and the day of week.
|
||||
For the day of week part, a question mark ? is utilized. This format
|
||||
may not be parsed by all online crontab calculators or expression generators.
|
||||
|
||||
## Convenience scheduling
|
||||
|
||||
These special time specification tokens which replace the 5 initial time and date fields, and are prefixed with the '@' character, are supported:
|
||||
|
@ -184,6 +184,15 @@ SCENARIO("Examples from README.md")
|
||||
DT(2018_y / 03 / 1, hours{12}, minutes{13}, seconds{48})
|
||||
}));
|
||||
|
||||
REQUIRE(test("0 * * * * ?", DT(2018_y / 03 / 1, hours{ 12 }, minutes{ 0 }, seconds{ 10 }),
|
||||
{
|
||||
DT(2018_y / 03 / 1, hours{12}, minutes{1}, seconds{0}),
|
||||
DT(2018_y / 03 / 1, hours{12}, minutes{2}, seconds{0}),
|
||||
DT(2018_y / 03 / 1, hours{12}, minutes{3}, seconds{0}),
|
||||
DT(2018_y / 03 / 1, hours{12}, minutes{4}, seconds{0})
|
||||
}));
|
||||
|
||||
|
||||
REQUIRE(test("0 0 12 * * MON-FRI", DT(2018_y / 03 / 10, hours{12}, minutes{13}, seconds{45}),
|
||||
{
|
||||
DT(2018_y / 03 / 12, hours{12}),
|
||||
@ -212,4 +221,4 @@ SCENARIO("Examples from README.md")
|
||||
SCENARIO("Unable to calculate time point")
|
||||
{
|
||||
REQUIRE_FALSE(test( "0 0 * 31 FEB *", DT(2021_y / 1 / 1), DT(2022_y / 1 / 1)));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user