diff options
author | Nathan Lasseter <Nathan Lasseter nathan@bytemark.co.uk> | 2014-05-30 13:34:17 +0100 |
---|---|---|
committer | Nathan Lasseter <Nathan Lasseter nathan@bytemark.co.uk> | 2014-05-30 13:34:17 +0100 |
commit | 08fecb93995728ab53d78beefc329331d79f303f (patch) | |
tree | 3ba80e9dede138ce108ad53183cecc47069c736e /src/eco_time.erl | |
parent | 59cee25c7f863e76bc82cd58b33f6f3b4e13770c (diff) |
Added directory structure and Makefile
Diffstat (limited to 'src/eco_time.erl')
-rw-r--r-- | src/eco_time.erl | 30 |
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. |