annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 -module(aweconn).
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 -behavior(gen_server).
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 -export([start/1, init/1, handle_call/3, handle_cast/2, handle_info/2]).
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 start(Socket) ->
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 {ok, Pid} = gen_server:start(?MODULE, [], []),
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 set_socket(Pid, Socket).
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 set_socket(Pid, Socket) ->
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 ok = gen_tcp:controlling_process(Socket, Pid),
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 gen_server:cast(Pid, {set_socket, Socket}).
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 init(_Args) ->
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 io:format("aweconn starting~n"),
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 {ok, no_sock}.
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 handle_call(_Msg, _From, State) ->
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 {noreply, State}.
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 handle_cast({set_socket, NewSocket}, Socket) ->
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 io:format("aweconn got socket~n"),
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 inet:setopts(NewSocket, [{active, true}]),
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24 State = case Socket of
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 no_sock -> NewSocket;
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 Old -> gen_tcp:close(Old), NewSocket
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 end,
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 {noreply, State};
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30 handle_cast(_, State) ->
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 {noreply, State}.
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
33 handle_info({tcp, Socket, Data}, State) ->
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
34 io:format("Received: ~p~n", [Data]),
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 gen_tcp:send(Socket, Data),
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 {noreply, State};
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37 handle_info(_Msg, State) ->
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 {noreply, State}.
db5c7047ef0e Initial commit
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
39