From 2fe905e366dfa4d83d71a2cf6b56d88bafd19553 Mon Sep 17 00:00:00 2001 From: David Reiss Date: Wed, 11 Jun 2008 01:02:23 +0000 Subject: [PATCH] adding socket options to thrift client git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666451 13f79535-47bb-0310-9956-ffa450edef68 --- lib/alterl/src/thrift_client.erl | 21 ++++++++++++++------- lib/alterl/src/thrift_socket_server.erl | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/alterl/src/thrift_client.erl b/lib/alterl/src/thrift_client.erl index ec1f87f5..dee91fb2 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 @@ close(Client) when is_pid(Client) -> %% {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([{strict_write, Bool} | Rest], State) when is_boolean(Bool) -> 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 @@ parse_options([{connect_timeout, TO} | Rest], State) when TO =:= infinity; is_in %% {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 aad934cf..046ffca3 100644 --- a/lib/alterl/src/thrift_socket_server.erl +++ b/lib/alterl/src/thrift_socket_server.erl @@ -107,7 +107,7 @@ init(State=#thrift_socket_server{ip=Ip, port=Port}) -> BaseOpts = [binary, {reuseaddr, true}, {packet, 0}, - {backlog, 30}, + {backlog, 4096}, {recbuf, 8192}, {active, false}], Opts = case Ip of -- 2.17.1