From 4c771ba32d2d01d0bbb5236521adefbfc4620033 Mon Sep 17 00:00:00 2001 From: Eric Merritt Date: Fri, 8 Oct 2010 05:42:25 +0800 Subject: [PATCH] migrate to explicit exported types --- ebin/erlcron.app | 2 +- include/erlcron.hrl | 19 ------------------- src/ecrn_agent.erl | 15 +++++++-------- src/erlcron.erl | 36 +++++++++++++++++++++++++++++++++++- 4 files changed, 43 insertions(+), 29 deletions(-) delete mode 100644 include/erlcron.hrl diff --git a/ebin/erlcron.app b/ebin/erlcron.app index fabd875..a79c2a1 100644 --- a/ebin/erlcron.app +++ b/ebin/erlcron.app @@ -5,7 +5,7 @@ [{description, "Erlang Implementation of cron"}, - {vsn, "0.1"}, + {vsn, "0.2"}, {modules, [erlcron, diff --git a/include/erlcron.hrl b/include/erlcron.hrl deleted file mode 100644 index 203a984..0000000 --- a/include/erlcron.hrl +++ /dev/null @@ -1,19 +0,0 @@ - --type seconds() :: integer(). --type date() :: {integer(), integer(), integer()}. --type time() :: {integer(), integer(), integer()}. --type datetime() :: {date(), time()}. - --type cron_time() :: {integer(), am | pm} | {integer(), integer(), am | pm}. --type constraint() :: {between, cron_time(), cron_time()}. --type duration() :: {integer(), hr | min | sec}. --type period() :: cron_time() | [cron_time()] | {every, duration(), constraint()}. --type dom() :: integer(). --type dow() :: mon | tue | wed | thu | fri | sat | sun. --type callable() :: mfa() | function(). --type run_when() :: {daily, period()} - | {weekly, dow(), period()} - | {monthly, dom(), period()}. - --type job() :: {run_when(), callable()}. --opaque job_ref() :: {integer(), reference()}. diff --git a/src/ecrn_agent.erl b/src/ecrn_agent.erl index 63c7646..cfde845 100644 --- a/src/ecrn_agent.erl +++ b/src/ecrn_agent.erl @@ -20,7 +20,6 @@ -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). --include_lib("erlcron/include/erlcron.hrl"). -include("erlcron-internal.hrl"). -record(state, {job, @@ -42,11 +41,11 @@ %% Starts the server with the apropriate job and the appropriate ref %% @end %%-------------------------------------------------------------------- --spec start_link(job_ref(), job()) -> ok. +-spec start_link(erlcron:job_ref(), erlcron:job()) -> ok. start_link(JobRef, Job) -> gen_server:start_link(?MODULE, [JobRef, Job], []). --spec get_datetime(pid()) -> datetime(). +-spec get_datetime(pid()) -> erlcron:datetime(). get_datetime(Pid) -> gen_server:call(Pid, get_datetime). @@ -54,7 +53,7 @@ get_datetime(Pid) -> cancel(Pid) -> gen_server:cast(Pid, shutdown). --spec set_datetime(pid(), datetime(), datetime()) -> ok. +-spec set_datetime(pid(), erlcron:datetime(), erlcron:datetime()) -> ok. set_datetime(Pid, DateTime, Actual) -> gen_server:cast(Pid, {set_datetime, DateTime, Actual}). @@ -67,7 +66,7 @@ recalculate(Pid) -> %% Validate that a run_when spec specified is correct. %% @end %%-------------------------------------------------------------------- --spec validate(run_when()) -> valid | invalid. +-spec validate(erlcron:run_when()) -> valid | invalid. validate(Spec) -> State = #state{job=undefined, alarm_ref=undefined}, @@ -226,7 +225,7 @@ do_job_run(State, {_, {M, F, A}}) when is_record(State, state) -> proc_lib:spawn(M, F, A). %% @doc Returns the current time, in seconds past midnight. --spec current_time(record(state)) -> seconds(). +-spec current_time(record(state)) -> erlcron:seconds(). current_time(State) -> {_, {H,M,S}} = current_date(State), S + M * 60 + H * 3600. @@ -242,7 +241,7 @@ current_date(State) -> %% @doc Calculates the duration in milliseconds until the next time %% a job is to be run. --spec until_next_milliseconds(record(state), job()) -> seconds(). +-spec until_next_milliseconds(record(state), erlcron:job()) -> erlcron:seconds(). until_next_milliseconds(State, Job) -> try Millis = until_next_time(State, Job) * ?MILLISECONDS, @@ -263,7 +262,7 @@ normalize_seconds(State, Seconds) -> %% @doc Calculates the duration in seconds until the next time %% a job is to be run. --spec until_next_time(record(state), job()) -> seconds(). +-spec until_next_time(record(state), erlcron:job()) -> erlcron:seconds(). until_next_time(_State, {{once, Seconds}, _What}) when is_integer(Seconds) -> Seconds; until_next_time(State, {{once, {H, M, S}}, _What}) diff --git a/src/erlcron.erl b/src/erlcron.erl index 2d1e1c9..a776ba8 100644 --- a/src/erlcron.erl +++ b/src/erlcron.erl @@ -14,7 +14,41 @@ multi_set_datetime/1, multi_set_datetime/2]). --include_lib("erlcron/include/erlcron.hrl"). +-export_type([job/0, + job_ref/0, + run_when/0, + callable/0, + dow/0, + dom/0, + period/0, + duration/0, + constraint/0, + cron_time/0, + datetime/0, + time/0, + date/0, + seconds/0]). + +-type seconds() :: integer(). +-type date() :: {integer(), integer(), integer()}. +-type time() :: {integer(), integer(), integer()}. +-type datetime() :: {date(), time()}. + +-type cron_time() :: {integer(), am | pm} | {integer(), integer(), am | pm}. +-type constraint() :: {between, cron_time(), cron_time()}. +-type duration() :: {integer(), hr | min | sec}. +-type period() :: cron_time() | [cron_time()] | {every, duration(), constraint()}. +-type dom() :: integer(). +-type dow() :: mon | tue | wed | thu | fri | sat | sun. +-type callable() :: mfa() | function(). +-type run_when() :: {once, seconds()} + | {daily, period()} + | {weekly, dow(), period()} + | {monthly, dom(), period()}. + +-type job() :: {run_when(), callable()}. +-opaque job_ref() :: {integer(), reference()}. + %%%=================================================================== %%% API