-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimple1.erl
47 lines (32 loc) · 1.01 KB
/
simple1.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
-module(simple1).
-export([server/1,client/1,start/1,spawn_n/2]).
server(State) ->
receive
{request,Return_PID} ->
io:format("SERVER ~w: Client request received from ~w~n",
[self(), Return_PID]) ,
NewState = State + 1,
Return_PID ! {hit_count,NewState},
server(NewState);
{server_owner,Return_PID} ->
io:format("SERVER ~w: Owner request recieved from ~w~n", [self(), Return_PID]),
Return_PID ! {hit_count,State},
server(State)
end.
client(Server_Address) ->
Server_Address ! {request, self()},
receive
{hit_count,Number} ->
io:format("CLIENT ~w: Hit count was ~w~n",[self(), Number])
end.
start(N) ->
Server_PID = spawn(simple,server,[0]),
spawn_n(N,Server_PID).
spawn_n(N,Server_PID) -> if
N>0 -> spawn(simple,client,[Server_PID]),
%% Use a random sleep in miliseconds to simulate the
%% client traffic pattern. timer:sleep(random:uniform(100)),
spawn_n(N-1,Server_PID);
N == 0 ->
io:format("Last client spawned.~n")
end.