Christopher Piro | 2f5afce | 2007-06-29 07:17:33 +0000 | [diff] [blame^] | 1 | -module(tServerSocket). |
| 2 | -include("tServerSocket.hrl"). |
| 3 | |
| 4 | -export([new/1, listen_MUTABLE/1, accept_MUTABLE/1, close/1]). |
| 5 | |
| 6 | new(Port) -> |
| 7 | #tServerSocket{port=Port, handle=nil}. |
| 8 | |
| 9 | listen_MUTABLE(This) -> |
| 10 | Port = This#tServerSocket.port, |
| 11 | Options = [binary, {packet, 0}, {active, false}], % was [] |
| 12 | |
| 13 | case gen_tcp:listen(Port, Options) of |
| 14 | {ok, ListenSocket} -> |
| 15 | This#tServerSocket{handle=ListenSocket} |
| 16 | % {error, _} -> |
| 17 | % TODO: no error handling in Ruby version? |
| 18 | end. |
| 19 | |
| 20 | accept_MUTABLE(This) -> |
| 21 | if |
| 22 | This#tServerSocket.handle /= nil -> |
| 23 | case gen_tcp:accept(This#tServerSocket.handle) of |
| 24 | {ok, Socket} -> |
| 25 | tSocket:setHandle_MUTABLE( tSocket:new(), Socket ) |
| 26 | % {error, _} -> |
| 27 | % TODO: no error handling in Ruby version? |
| 28 | end; |
| 29 | true -> |
| 30 | nil |
| 31 | end. |
| 32 | |
| 33 | close(This) -> |
| 34 | if |
| 35 | This#tServerSocket.handle /= nil -> |
| 36 | case gen_tcp:close(This#tServerSocket.handle) of |
| 37 | ok -> |
| 38 | ok |
| 39 | % {error, _} -> |
| 40 | % TODO: no error handling in Ruby version? |
| 41 | end; |
| 42 | true -> |
| 43 | ok |
| 44 | end. |