summaryrefslogtreecommitdiff
path: root/src/counter.erl
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-11-03 12:28:13 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-11-03 12:28:13 +0100
commitf8e537573beadf071dd2698590be05b53120f51a (patch)
treeec65af5af979aeb04342622d429d2f276c859f47 /src/counter.erl
parent4de202651fdd7a62eb76716f00cfc6e85a2400a9 (diff)
Switch to gen_server
Diffstat (limited to 'src/counter.erl')
-rw-r--r--src/counter.erl41
1 files changed, 8 insertions, 33 deletions
diff --git a/src/counter.erl b/src/counter.erl
index 4f4b3f1..2444ce0 100644
--- a/src/counter.erl
+++ b/src/counter.erl
@@ -6,7 +6,7 @@
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
--export([start/0, counter/0, next/0, set/1, stop/0]).
+-export([next/0, get/0, set/1]).
-define(MAXCOUNT, 32767).
@@ -23,7 +23,7 @@ handle_call(next, _From, N) ->
handle_call(get, _From, N) ->
{reply, N, N};
handle_call({set, N}, _From, _N) ->
- {reply, N, N}.
+ {reply, ok, N}.
handle_cast(_Msg, State) ->
{noreply, State}.
@@ -39,38 +39,13 @@ code_change(_OldVsn, State, _Extra) ->
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-start() ->
- register(?MODULE, spawn_link(?MODULE, counter, [])).
-
-counter() ->
- process_flag(trap_exit, true),
- count(0).
-
-count(N) when N > ?MAXCOUNT ->
- count(0);
-
-count(N) ->
- receive
- {next, FromPID} ->
- FromPID ! {next, N},
- count(N+1);
- {set, New} ->
- count(New);
- {'EXIT', Pid, Reason} ->
- io:format("~p: ~p~n", [Pid, Reason]),
- exit(normal);
- {stop} ->
- exit(normal)
- end.
-
set({present, N}) ->
- ?MODULE ! {set, N+1}.
+ gen_server:call(?SERVER, {set, N}).
next() ->
- ?MODULE ! {next, self()},
- receive
- {next, N} -> {present, N}
- end.
+ N = gen_server:call(?SERVER, next),
+ {present, N}.
-stop() ->
- ?MODULE ! {stop}.
+get() ->
+ N = gen_server:call(?SERVER, gete),
+ {present, N}.