[thrift] preliminary Erlang support (initial import)

Summary:
 * missing {list,map,set}s, inheritance is spotty
 * loose source code, plus everything is one process (application / gen_server behavior is forthcoming)
 * codegen is a mess, need t_fp_generator

Test Plan:
 * codegen invoked without -erl generates identical code for test/
 * calculatorHandler plus 'thrift -erl -r tutorial.thrift' more or less works

Revert Plan: ok


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665146 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/erl/src-loose/transport/tServerSocket.erl b/lib/erl/src-loose/transport/tServerSocket.erl
new file mode 100644
index 0000000..239af6e
--- /dev/null
+++ b/lib/erl/src-loose/transport/tServerSocket.erl
@@ -0,0 +1,44 @@
+-module(tServerSocket).
+-include("tServerSocket.hrl").
+
+-export([new/1, listen_MUTABLE/1, accept_MUTABLE/1, close/1]).
+
+new(Port) ->
+    #tServerSocket{port=Port, handle=nil}.
+
+listen_MUTABLE(This) ->
+    Port = This#tServerSocket.port,
+    Options = [binary, {packet, 0}, {active, false}], % was []
+
+    case gen_tcp:listen(Port, Options) of 
+	{ok, ListenSocket} ->
+	    This#tServerSocket{handle=ListenSocket}
+	% {error, _} -> 
+	% TODO: no error handling in Ruby version?
+    end.
+
+accept_MUTABLE(This) ->
+    if 
+	This#tServerSocket.handle /= nil ->
+	    case gen_tcp:accept(This#tServerSocket.handle) of
+		{ok, Socket} ->
+		    tSocket:setHandle_MUTABLE( tSocket:new(), Socket )
+	        % {error, _} -> 
+                % TODO: no error handling in Ruby version?
+	    end;
+	true ->
+	    nil
+    end.
+
+close(This) ->
+    if 
+ 	This#tServerSocket.handle /= nil ->
+	    case gen_tcp:close(This#tServerSocket.handle) of 
+		ok ->
+		    ok
+	        % {error, _} -> 
+                % TODO: no error handling in Ruby version?
+	    end;
+	true ->
+	    ok
+    end.