aboutsummaryrefslogtreecommitdiff
path: root/src/eco_time.erl
diff options
context:
space:
mode:
authorNathan Lasseter <Nathan Lasseter nathan@bytemark.co.uk>2014-05-30 13:34:17 +0100
committerNathan Lasseter <Nathan Lasseter nathan@bytemark.co.uk>2014-05-30 13:34:17 +0100
commit08fecb93995728ab53d78beefc329331d79f303f (patch)
tree3ba80e9dede138ce108ad53183cecc47069c736e /src/eco_time.erl
parent59cee25c7f863e76bc82cd58b33f6f3b4e13770c (diff)
Added directory structure and Makefile
Diffstat (limited to 'src/eco_time.erl')
-rw-r--r--src/eco_time.erl30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/eco_time.erl b/src/eco_time.erl
new file mode 100644
index 0000000..587cca5
--- /dev/null
+++ b/src/eco_time.erl
@@ -0,0 +1,30 @@
+-module(eco_time).
+-export([ticker/4]).
+
+ticker(Watcher, Interval, ProcList, Timeout) ->
+ receive
+ {From, stop} ->
+ From ! {ok, stopped},
+ {ok, stopped}
+ after Interval ->
+ handle_tick(self(), ProcList, Timeout),
+ receive
+ {ok, endtick} ->
+ Watcher ! {endtick, self()},
+ ticker(Watcher, Interval, ProcList, Timeout);
+ {error, notock, Proc} ->
+ Watcher ! {error, notock, Proc, self()},
+ {error, notock, Proc}
+ end
+ end.
+
+handle_tick(Ticker, [], _) ->
+ Ticker ! {ok, endtick};
+handle_tick(Ticker, [This | Next], Timeout) ->
+ This ! {self(), tick},
+ receive
+ {This, tock} ->
+ handle_tick(Ticker, Next, Timeout)
+ after Timeout ->
+ Ticker ! {error, notock, This}
+ end.