|
|
- %%%----------------------------------------------------------------------
- %%%
- %%% wg @copyright 2009
- %%%
- %%% @author litao cheng <litaocheng@gmail.com>
- %%% @doc the crontab record defines
- %%%
- %%%----------------------------------------------------------------------
-
- -define(CRON_ANY, 1). % "*"
- -define(CRON_NUM, 2). % 2
- -define(CRON_RANGE, 4). % 2-3
- -define(CRON_LIST, 8). % "2,3-6"
- -type cronf_type() :: 1 | 2 | 4 | 8.
-
- -type cronf_num() :: non_neg_integer().
- -type cronf_range() :: {non_neg_integer(), non_neg_integer(), pos_integer()}.
- -type cronf_list() :: [cronf_num() | cronf_range()].
-
- -type cronf_value() :: cronf_num() | cronf_range() | cronf_list().
-
- -record(cron_field, {
- type = ?CRON_ANY :: cronf_type(), % field type
- value :: cronf_value() % field value
- }).
- -type cron_field() :: #cron_field{}.
-
- -record(cron_entry, {
- m :: cron_field(), % minute
- h :: cron_field(), % hour
- dom :: cron_field(), % day of month
- mon :: cron_field(), % month
- dow :: cron_field(), % day of week
- mfa :: tuple() % the mfa
- }).
- -type cron_entry() :: #cron_entry{}.
-
- -define(CRON_FILE, "../ebin/data_crontab.beam").
- -define(CRON_FILE_CLS, "../ebin/data_crontab_cls.beam").
-
- -define(RELOAD_FILE_INTERVAL, 60000 * 60). % 1 hour
- -define(CHECK_FILE_INTERVAL, 60000). % 1 min
- -define(CHECK_CRON_INTERVAL, 60000). % 1 min
- -define(SERVER, ?MODULE).
-
- -record(crontab_state, {
- files =[], % file name
- file_activity :: list(), % activity file lists
- mtime = 0 :: pos_integer(), % last modify time
- entrys = [] :: [cron_entry()], % the cron tasks
- file_timer :: reference(), % the check file last modified timer
- cron_timer :: reference() % the check cron task timer
- }).
|