about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@gmail.com>2016-09-22T13·37+0200
committerVincent Ambo <tazjin@gmail.com>2016-09-22T13·37+0200
commitfac2474ac66cd9a561844b1a6a8f9a91aa45e160 (patch)
tree76d8312e6e3e4945ab5f58b8ecb398ce4ebd071d /src
parent6c456a06c7166b70a2347283a7afcfc4107cb3c7 (diff)
Add the rest of the damn presentation
Diffstat (limited to 'src')
-rw-r--r--src/hello2.erl2
-rw-r--r--src/hello_server.erl12
-rw-r--r--src/hello_server2.erl36
-rw-r--r--src/hello_sup.erl24
4 files changed, 73 insertions, 1 deletions
diff --git a/src/hello2.erl b/src/hello2.erl
index 42406919eff8..2d1f6c84c401 100644
--- a/src/hello2.erl
+++ b/src/hello2.erl
@@ -2,7 +2,7 @@
 -export([hello/1]).
 
 hello(Name) ->
-    io:format("Hello ~s!~n", [Name]).
+    io:format("Hey ~s!~n", [Name]).
 
 % 3> c(hello2).
 % {ok,hello2}
diff --git a/src/hello_server.erl b/src/hello_server.erl
new file mode 100644
index 000000000000..01df14ac57d5
--- /dev/null
+++ b/src/hello_server.erl
@@ -0,0 +1,12 @@
+-module(hello_server).
+-export([start_server/0, server/0]).
+
+start_server() ->
+    spawn(fun() -> server() end).
+
+server() ->
+    receive
+        {greet, Name} ->
+            io:format("Hello ~s!~n", [Name]),
+            hello_server:server()
+    end.
diff --git a/src/hello_server2.erl b/src/hello_server2.erl
new file mode 100644
index 000000000000..24bb934ee503
--- /dev/null
+++ b/src/hello_server2.erl
@@ -0,0 +1,36 @@
+-module(hello_server2).
+-behaviour(gen_server).
+-compile(export_all).
+
+%%% Start callback for supervisor
+start_link() ->
+    gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
+
+%%% gen_server callbacks
+
+init([]) ->
+    {ok, sets:new()}.
+
+handle_call({greet, Name}, _From, State) ->
+    io:format("Hello ~s!~n", [Name]),
+    NewState = sets:add_element(Name, State),
+    {reply, ok, NewState};
+
+handle_call({bye, Name}, _From, State) ->
+    io:format("Goodbye ~s!~n", [Name]),
+    NewState = sets:del_element(Name, State),
+    {reply, ok, NewState}.
+
+terminate(normal, State) ->
+    [io:format("Goodbye ~s!~n", [Name]) || Name <- State],
+    ok.
+
+%%% Unused gen_server callbacks
+code_change(_OldVsn, State, _Extra) ->
+    {ok, State}.
+
+handle_info(_Info, State) ->
+    {noreply, State}.
+
+handle_cast(_Request, State) ->
+    {noreply, State}.
diff --git a/src/hello_sup.erl b/src/hello_sup.erl
new file mode 100644
index 000000000000..7fee0928c575
--- /dev/null
+++ b/src/hello_sup.erl
@@ -0,0 +1,24 @@
+-module(hello_sup).
+-behaviour(supervisor).
+-export([start_link/0, init/1]).
+
+%%% Module API
+
+start_link() ->
+    supervisor:start_link({local, ?MODULE}, ?MODULE, []).
+
+%%% Supervisor callbacks
+
+init([]) ->
+    Children = [hello_spec()],
+    {ok, { {one_for_one, 5, 10}, Children}}.
+
+%%% Private
+
+hello_spec() ->
+    #{id       => hello_server2,
+      start    => {hello_server2, start_link, []},
+      restart  => permanent,
+      shutdown => 5000,
+      type     => worker,
+      module   => [hello_server2]}.