From f8e537573beadf071dd2698590be05b53120f51a Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 3 Nov 2015 12:28:13 +0100 Subject: Switch to gen_server --- src/counter.erl | 41 ++++++++--------------------------------- 1 file changed, 8 insertions(+), 33 deletions(-) (limited to 'src/counter.erl') 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}. -- cgit v1.2.3