源战役
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

53 regels
1.7 KiB

%%%----------------------------------------------------------------------
%%%
%%% 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
}).