Skip to content

Commit

Permalink
fixes, doc, refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
Konstantin Nikiforov committed Oct 19, 2011
1 parent 3a57d0c commit 72ae405
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 11 deletions.
15 changes: 15 additions & 0 deletions doc/erlang-api-examples
@@ -0,0 +1,15 @@
%% To call io:format("~p", [context@]) every 10 seconds all day
example1(Context) ->
JobId = <<"my job #1">>,
When = {daily, {every,{5,sec},{between,{0,am},{11,59,pm}}}},
Task = cron_task:new(When, io, format, ["~p", [context@]]),
{ok, _} = z_notifier:first({cron_job_insert, JobId, Task}).


%% Parse MFA from string. Start *temporarily* job. Job will be dropped on stop.
example2(ArgsString, Context) ->
JobId = <<"my other job">>,
When = {weekly, wed, {2, am}},
Args = cron_task:parse_args(ArgsString),
Task = cron_task:new(When, io, format, Args),
{ok,_} = z_notifier:first({cron_job_start, JobId, Task}).
6 changes: 3 additions & 3 deletions resources/resource_cron_admin.erl
Expand Up @@ -47,9 +47,9 @@ event({submit, insert_job, _TriggerId, _TargetId}, Context) ->
Q = fun(Param) -> z_context:get_q(Param, Context) end,
JobId = Q(id),
%% parsing time definition into erlang term
{ok, When} = cron_task:parse_when(Q("when")),
{ok, Mfa} = cron_task:parse_mfa(Q("module"), Q("function"), Q("args")),
Task = cron_task:new(When, Mfa),
When = cron_task:parse_when(Q("when")),
Mfa = cron_task:parse_mfa(Q("module"), Q("function"), Q("args")),
Task = cron_task:new(When, Mfa),
case z_notifier:first({cron_job_insert, JobId, Task}, Context) of
{ok,_} -> RA = [{dialog_close, []}, {reload, []}],
z_render:wire(RA, Context);
Expand Down
1 change: 0 additions & 1 deletion support/cron_sup.erl
Expand Up @@ -101,7 +101,6 @@ init([sup, {_, JobSup, JobSrv} = Names, Context]) ->
%% Previously, simple_one_for_one was used, but due to compatibility problems (OTP-9201)
%% and other management issues, it was replaced by one_for_one.
init(job_sup) ->
io:format("1", []),
{ok,
{_SupFlags = {one_for_one, ?CRON_MAX_RESTART, ?CRON_MAX_TIME},
[] %% no children. They will be dynamically added later.
Expand Down
27 changes: 20 additions & 7 deletions support/cron_task.erl
Expand Up @@ -32,9 +32,10 @@
-module(cron_task).

-export([
new/0, new/2,
new/0, new/2, new/4,
get_mfa/1, set_mfa/4, parse_mfa/3,
get_when/1, set_when/2, parse_when/1
get_when/1, set_when/2, parse_when/1,
parse_args/1
]).

%% @doc create empty task tuple.
Expand All @@ -45,6 +46,9 @@ new() ->
new(When, MFA) ->
{When, MFA}.

new(When, M,F,A) ->
{When, {M,F,A}}.

%% @doc replace MFA for task
set_mfa(M,F,A, {When, _}) ->
new(When, {M,F,A}).
Expand All @@ -63,15 +67,24 @@ get_when({When, _}) -> When.

%% @doc Parse Module-Function-Args combination
parse_mfa(M, F, A) ->
M1 = parse_term(M),
F1 = parse_term(F),
A1 = parse_term(ensure_list(A)),
{ok, {M1,F1,A1}}.
M1 = z_convert:to_atom(M),
F1 = z_convert:to_atom(F),
A1 = parse_args(A),
{M1,F1,A1}.


%% @doc to parse arguments list string
parse_args([H|_]=ArgsStr) when is_integer(H) ->
parse_term(ensure_list(ArgsStr));
parse_args(Args) when is_list(Args) ->
Args;
parse_args(Args) when is_binary(Args) ->
parse_args(binary_to_list(Args)).


%% @doc Parse when clause from string.
parse_when(When) ->
{ok, parse_term(When)}.
parse_term(When).


%%%%%%%%%%%%%%%%%%%%%%%%%%
Expand Down

0 comments on commit 72ae405

Please sign in to comment.