summaryrefslogtreecommitdiff
path: root/redis2-nginx-module-0.15/misc/serv.erl
blob: 52188f2bfe22666565be509fab1a2fcc3fdc01aa (plain)
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
#!/usr/bin/env escript

-define(PORT, 4891).
-define(TIMEOUT, 3000).

main(_) -> io:format("listening to port ~w~n", [?PORT]), server().

server() ->
    case gen_tcp:listen(?PORT, [binary, {active, false}, {reuseaddr, true}, {nodelay, true}]) of
        {ok, LSock} -> wait_connect(LSock);
        E -> io:format("error occured: ~w~n", [E])
    end.

wait_connect(LSock) ->
    % io:format("trying to accept..."),
    case gen_tcp:accept(LSock) of
        {ok, Sock} ->
            Pid = spawn(
                fun () ->
                    receive start -> ok end,
                    get_request(Sock)
                end
            ),
            gen_tcp:controlling_process(Sock, Pid),
            Pid ! start;
        {error, Error} ->
            io:format("failed to accept: ~w~n", [Error]);
        E -> io:format("error: ~w~n", [E])
    end,
    wait_connect(LSock).

get_request(Sock) ->
    % io:format("get request~n"),
    send_response(Sock).

send_response(Sock) ->
    gen_tcp:send(Sock, "$1a\r\n"),
    gen_tcp:close(Sock).