Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.39 KB | None | 0 0
  1. -module(rudy).
  2. -export([init/1]).
  3. -export([start/1, stop/0]).
  4.  
  5. start(Port) ->
  6.   register(rudy, spawn(fun() -> init(Port) end)).
  7.  
  8. stop() ->
  9.   exit(whereis(rudy), "time to die").
  10.  
  11. init(Port) ->
  12.   Opt = [list, {active, false}, {reuseaddr, true}],
  13.   case gen_tcp:listen(Port, Opt) of
  14.     {ok, Listen} ->
  15.       handler(Listen),          % added this
  16.       gen_tcp:close(Listen),
  17.       % ok;
  18.       init(Port);               % added so it doesnt crash after exec
  19.     {error, Error} ->
  20.       io:format("~p~n", ["error 1"]),
  21.       io:format("~p~n", [Error]),
  22.       error
  23.   end.
  24.  
  25. handler(Listen) ->
  26.   case gen_tcp:accept(Listen) of
  27.     {ok, Client} ->
  28.       request(Client);      % added this
  29.     {error, Error} ->
  30.       io:format("~p~n", ["error 2"]),
  31.       io:format("~p~n", [Error]),
  32.       error
  33.   end.
  34.  
  35. request(Client) ->
  36.   Recv = gen_tcp:recv(Client, 0),
  37.   case Recv of
  38.     {ok, Str} ->
  39.       Request = http:parse_request(Str),  % added this
  40.       Response = reply(Request),
  41.       gen_tcp:send(Client, Response);
  42.     {error, Error} ->
  43.       io:format("rudy: error ~w~n", [Error])
  44.   end,
  45.   gen_tcp:close(Client).
  46.  
  47. reply({{get, URI, _}, _, _}) ->
  48.   % http:ok(...).
  49.   % http:ok("<html><head><title>Rudy</title></head><body>This is a test.<br/>" ++ URI ++ "</body></html>").
  50.   timer:sleep(40),
  51.   http:ok("Hello there.").
  52.  
  53. % ok(Body) ->
  54. %   "HTTP/1.1 200 OK\r\n" ++ "\r\n" ++ Body.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement