style_cron_job

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

style cron job

Style Cron Job is periodic operations executor and definator with basic syntax. You can define a period and run your process with your own executor or through the controller.
Features #
For the second, minute, hour, day, week, and month timepieces, you can specify periods such as "Each x in y time" or "Every x , in y time".
It has a simple syntax, close to spoken language.
Like this:
each.day.atHour(10).atMinute(20);
every.x(1).day.atHour(10).atMinute(20);
copied to clipboard
Both are mean "each day 10:20:00".
How does it work?
It basically uses the mechanism of checking once per second with Stream.periodic . Checks if it is necessary. If necessary, the process is started. Every checking is small process in ends with ~0.0012 ms (60k check in 77ms)
It was necessary to check every second for less ram consumption than Future.delayed or Timer until the next time, which is other methods.
Moreover, multiple cron jobs can be run on a single Stream.periodic.
Additional condition
Can define additional condition like,
each.day.atHour(10).atMinute(20).only((time) {
return time.weekday != 7; // except sunday
});
copied to clipboard
Getting started #
1 ) Define Period #
There are 2 different options to start defining a period: each , every.
each is used for each month, week, day, hour, minute and second.
every is used for needs such as once every 3 days, once every 2 months.
each.**
every.x(3).**
copied to clipboard
** must be month, week , day , hour , minute, second for both,
Specify run time in sub time segments
For example "each day at 10:20:30"
each.day.atHour(10).atMinute(20).atSecond(30);
copied to clipboard
Default hour , minute and second is 0.
Default weekday , day is 1.
at* subsegments can be used sequentially
Generated sub time segments
You can use subsegments of a certain time.
each.day.fromNowOn(DateTime.now());
each.day.fromNowOn(); // default DateTime.now()
copied to clipboard
2) Start #
Listen
var period = each.day.onMinute(10);
period.listen((t) {
// do on each day 00:10
});
period.dispose();
copied to clipboard
Stream
var stream = each.minute.fromNowOn().asStream();
// eg starting 00:10:38
stream.listen((time){
// Do on each minute on 38. second
});
// Don't forget
stream.cancel();
copied to clipboard
Controller
Controller manages all operations with a single stream. So this is the most effective type of use.
var runner = CronJobController();
runner.add(each.second.asRunner((time) {
// Do on each second
}));
runner.add(every.x(10).second.asRunner((time) {
// Do on every 10 seconds
}));

// Start
runner.start();
copied to clipboard
Custom
You can check period for necessary calling with time.
var period = each.second.period;
var necessary = period.isNecessary(DateTime.now());
if (necessary) {
// Do
}
copied to clipboard
Usage Examples #
Each Week on Saturday at 23:45 (11:45 PM)
each.week.onWeekDay(6).atHour(23).atMinute(45);
copied to clipboard

Each Week on Monday at 09:00
each.week.onWeekDay(1).atHour(9);
copied to clipboard

Each Month on 15th at 09:00
each.month.onDay(15).atHour(9);
copied to clipboard

Once of every 3 days at 00:00:59
every.x(3).day.atSecond(59);
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.