% $Id: countserver.erl,v 1.1 2013/11/08 12:02:43 leavens Exp leavens $ -module(countserver). -export([start/1,cserver/1,add/1,get/1]). % The state of this server is an integer. -spec start(State::integer()) -> pid(). % Start a server with the given initial state, % and return its pid. start(State) -> spawn(?MODULE, cserver, [State]). -spec cserver(State::integer()) -> no_return(). % Handle add and get messages. cserver(State) -> receive {add} -> cserver(State+1); {Pid,get} -> Pid ! {value_is, State}, cserver(State) end. -spec add(Server::pid()) -> ok. % add increments the count in the state of Server. add(Server) -> Server ! {add}, ok. %% added this after class, so internal details aren't exposed -spec get(Server::pid()) -> integer(). get(Server) -> Server ! {self(), get}, receive {value_is, Val} -> Val end.