File: server.erl

package info (click to toggle)
erlang 1%3A17.3-dfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 173,260 kB
  • sloc: erlang: 1,354,163; xml: 365,926; ansic: 325,705; cpp: 50,390; makefile: 23,663; java: 10,540; sh: 10,013; lisp: 8,056; python: 4,826; pascal: 3,263; asm: 2,904; perl: 2,853; tcl: 245; sed: 86
file content (44 lines) | stat: -rw-r--r-- 815 bytes parent folder | download | duplicates (14)
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
-module(server).
-compile(export_all).

start() ->
    application:start(runtime_tools),
    Pid = spawn(?MODULE,loop,[[], 0]),
    register(server,Pid).

stop() ->
    case lists:member(server, registered()) of
	true ->
	    server ! stop;
	false ->
	    ok
    end.

loop(Data, Num) ->
    receive
	{put,From,Ting} -> timer:sleep(2),
			   received(From,Ting),
			   From ! ok,
			   loop([Ting|Data], Num+1);
	{get,From}      -> From ! Data,
			   loop(Data, Num+1);
	stop            -> stopped;
	clear           -> loop([], Num+1);
	{cnt, From}     -> From ! Num,
			   loop(Data, Num)
    end.

counter() ->
    server ! {cnt, self()},
    receive
	Num ->
	    Num
    end.

received(From, Thing) ->
    case Thing of
	never_send_this_atom ->
	    loop(Thing, 0);
	_ ->
	    {return, 27, Thing, From}
    end.