Skip to content

Commit 7db98a4

Browse files
committed
0820 basic http server supervisor
1 parent aae4f44 commit 7db98a4

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

http_server/lib/http_server.ex

+21-1
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,28 @@ defmodule HttpServer do
88
end
99

1010
def init() do
11+
Process.flag(:trap_exit, true)
12+
13+
start_listener()
14+
|> supervise()
15+
end
16+
17+
def start_listener() do
1118
{:ok, socket} = :gen_tcp.listen(@port, @http_options)
12-
accept(socket)
19+
pid = spawn_link(HttpServer, :accept, [socket])
20+
Logger.info("Listener started #{inspect(pid)}")
21+
socket
22+
end
23+
24+
def supervise(socket) do
25+
receive do
26+
{:EXIT, pid, reason} ->
27+
Logger.error("Listener process (#{inspect(pid)}) Crashed. #{reason}")
28+
:gen_tcp.close(socket)
29+
30+
start_listener()
31+
|> supervise()
32+
end
1333
end
1434

1535
def accept(socket) do

0 commit comments

Comments
 (0)