comparison server/awetv/src/aweconn.erl @ 0:db5c7047ef0e default tip

Initial commit
author Mike Pavone <pavone@retrodev.com>
date Fri, 21 Jun 2013 22:09:34 -0700
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:db5c7047ef0e
1 -module(aweconn).
2 -behavior(gen_server).
3
4 -export([start/1, init/1, handle_call/3, handle_cast/2, handle_info/2]).
5
6 start(Socket) ->
7 {ok, Pid} = gen_server:start(?MODULE, [], []),
8 set_socket(Pid, Socket).
9
10 set_socket(Pid, Socket) ->
11 ok = gen_tcp:controlling_process(Socket, Pid),
12 gen_server:cast(Pid, {set_socket, Socket}).
13
14 init(_Args) ->
15 io:format("aweconn starting~n"),
16 {ok, no_sock}.
17
18 handle_call(_Msg, _From, State) ->
19 {noreply, State}.
20
21 handle_cast({set_socket, NewSocket}, Socket) ->
22 io:format("aweconn got socket~n"),
23 inet:setopts(NewSocket, [{active, true}]),
24 State = case Socket of
25 no_sock -> NewSocket;
26 Old -> gen_tcp:close(Old), NewSocket
27 end,
28 {noreply, State};
29
30 handle_cast(_, State) ->
31 {noreply, State}.
32
33 handle_info({tcp, Socket, Data}, State) ->
34 io:format("Received: ~p~n", [Data]),
35 gen_tcp:send(Socket, Data),
36 {noreply, State};
37 handle_info(_Msg, State) ->
38 {noreply, State}.
39