You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by dr...@apache.org on 2009/09/09 19:18:57 UTC
svn commit: r813054 -
/incubator/thrift/trunk/lib/erl/src/thrift_socket_server.erl
Author: dreiss
Date: Wed Sep 9 17:18:57 2009
New Revision: 813054
URL: http://svn.apache.org/viewvc?rev=813054&view=rev
Log:
THRIFT-574. erlang: Support framed transport for servers
Modified:
incubator/thrift/trunk/lib/erl/src/thrift_socket_server.erl
Modified: incubator/thrift/trunk/lib/erl/src/thrift_socket_server.erl
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/erl/src/thrift_socket_server.erl?rev=813054&r1=813053&r2=813054&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/erl/src/thrift_socket_server.erl (original)
+++ incubator/thrift/trunk/lib/erl/src/thrift_socket_server.erl Wed Sep 9 17:18:57 2009
@@ -37,7 +37,8 @@
ip=any,
listen=null,
acceptor=null,
- socket_opts=[{recv_timeout, 500}]
+ socket_opts=[{recv_timeout, 500}],
+ framed=false
}).
start(State=#thrift_socket_server{}) ->
@@ -101,7 +102,9 @@
Max when is_integer(Max) ->
Max
end,
- parse_options(Rest, State#thrift_socket_server{max=MaxInt}).
+ parse_options(Rest, State#thrift_socket_server{max=MaxInt});
+parse_options([{framed, Framed} | Rest], State) when is_boolean(Framed) ->
+ parse_options(Rest, State#thrift_socket_server{framed=Framed}).
start_server(State=#thrift_socket_server{name=Name}) ->
case Name of
@@ -165,22 +168,26 @@
State#thrift_socket_server{acceptor=null};
new_acceptor(State=#thrift_socket_server{acceptor=OldPid, listen=Listen,
service=Service, handler=Handler,
- socket_opts=Opts
+ socket_opts=Opts, framed=Framed
}) ->
Pid = proc_lib:spawn_link(?MODULE, acceptor_loop,
- [{self(), Listen, Service, Handler, Opts}]),
+ [{self(), Listen, Service, Handler, Opts, Framed}]),
%% error_logger:info_msg("Spawning new acceptor: ~p => ~p", [OldPid, Pid]),
State#thrift_socket_server{acceptor=Pid}.
-acceptor_loop({Server, Listen, Service, Handler, SocketOpts})
+acceptor_loop({Server, Listen, Service, Handler, SocketOpts, Framed})
when is_pid(Server), is_list(SocketOpts) ->
case catch gen_tcp:accept(Listen) of % infinite timeout
{ok, Socket} ->
gen_server:cast(Server, {accepted, self()}),
ProtoGen = fun() ->
{ok, SocketTransport} = thrift_socket_transport:new(Socket, SocketOpts),
- {ok, BufferedTransport} = thrift_buffered_transport:new(SocketTransport),
- {ok, Protocol} = thrift_binary_protocol:new(BufferedTransport),
+ {ok, Transport} =
+ case Framed of
+ true -> thrift_framed_transport:new(SocketTransport);
+ false -> thrift_buffered_transport:new(SocketTransport)
+ end,
+ {ok, Protocol} = thrift_binary_protocol:new(Transport),
{ok, IProt=Protocol, OProt=Protocol}
end,
thrift_processor:init({Server, ProtoGen, Service, Handler});