adding socket options to thrift client
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666451 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/alterl/src/thrift_client.erl b/lib/alterl/src/thrift_client.erl
index ec1f87f..dee91fb 100644
--- a/lib/alterl/src/thrift_client.erl
+++ b/lib/alterl/src/thrift_client.erl
@@ -24,7 +24,8 @@
strict_read = true,
strict_write = true,
framed = false,
- connect_timeout = infinity
+ connect_timeout = infinity,
+ sockopts = []
}).
%%====================================================================
@@ -37,8 +38,9 @@
start_link(Host, Port, Service) ->
start_link(Host, Port, Service, []).
-start_link(Host, Port, Service, Options) when is_integer(Port), is_atom(Service), is_list(Options) ->
- case gen_server:start_link(?MODULE, [Host, Port, Service, Options], []) of
+start_link(Host, Port, Service, Options)
+ when is_integer(Port), is_atom(Service), is_list(Options) ->
+ case gen_server:start_link(?MODULE, [Options], []) of
{ok, Pid} ->
case gen_server:call(Pid, {connect, Host, Port, Service}) of
ok ->
@@ -72,7 +74,7 @@
%% {stop, Reason}
%% Description: Initiates the server
%%--------------------------------------------------------------------
-init([_Host, _Port, _Service, Options]) ->
+init([Options]) ->
State = parse_options(Options, #state{}),
{ok, State}.
@@ -84,6 +86,8 @@
parse_options(Rest, State#state{strict_write=Bool});
parse_options([{framed, Bool} | Rest], State) when is_boolean(Bool) ->
parse_options(Rest, State#state{framed=Bool});
+parse_options([{sockopts, OptList} | Rest], State) when is_list(OptList) ->
+ parse_options(Rest, State#state{sockopts=OptList});
parse_options([{connect_timeout, TO} | Rest], State) when TO =:= infinity; is_integer(TO) ->
parse_options(Rest, State#state{connect_timeout=TO}).
@@ -96,12 +100,15 @@
%% {stop, Reason, State}
%% Description: Handling call messages
%%--------------------------------------------------------------------
-handle_call({connect, Host, Port, Service}, _From, State = #state{connect_timeout=Timeout}) ->
+handle_call({connect, Host, Port, Service}, _From,
+ State = #state{connect_timeout=Timeout,
+ sockopts=SockOpts}) ->
Options = [binary,
{packet, 0},
{active, false},
- {nodelay, true}],
-
+ {nodelay, true}
+ | SockOpts
+ ],
case catch gen_tcp:connect(Host, Port, Options, Timeout) of
{ok, Sock} ->
{ok, Transport} = thrift_socket_transport:new(Sock),
diff --git a/lib/alterl/src/thrift_socket_server.erl b/lib/alterl/src/thrift_socket_server.erl
index aad934c..046ffca 100644
--- a/lib/alterl/src/thrift_socket_server.erl
+++ b/lib/alterl/src/thrift_socket_server.erl
@@ -107,7 +107,7 @@
BaseOpts = [binary,
{reuseaddr, true},
{packet, 0},
- {backlog, 30},
+ {backlog, 4096},
{recbuf, 8192},
{active, false}],
Opts = case Ip of