From: David Reiss Date: Wed, 11 Jun 2008 01:01:13 +0000 (+0000) Subject: add optional (connect) Timeout parameter to thrift_client:start_link X-Git-Tag: 0.2.0~719 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=4fd7818efa089d8475a9dc54b71e6d3090ef2b74;p=common%2Fthrift.git add optional (connect) Timeout parameter to thrift_client:start_link Summary: will fail ungracefully if the timeout is hit, or anything bad happens. will fix. Reviewed By: eletuchy Test Plan: did some stuff with it git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666443 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/lib/alterl/src/thrift_client.erl b/lib/alterl/src/thrift_client.erl index d2ac6921..3c6a1670 100644 --- a/lib/alterl/src/thrift_client.erl +++ b/lib/alterl/src/thrift_client.erl @@ -10,7 +10,7 @@ -behaviour(gen_server). %% API --export([start_link/3, call/3, close/1]). +-export([start_link/3, start_link/4, call/3, close/1]). %% gen_server callbacks -export([init/1, handle_call/3, handle_cast/2, handle_info/2, @@ -29,8 +29,11 @@ %% Function: start_link() -> {ok,Pid} | ignore | {error,Error} %% Description: Starts the server %%-------------------------------------------------------------------- -start_link(Host, Port, Service) when is_integer(Port), is_atom(Service) -> - gen_server:start_link(?MODULE, [Host, Port, Service], []). +start_link(Host, Port, Service) -> + start_link(Host, Port, Service, _Timeout = infinity). + +start_link(Host, Port, Service, Timeout) when is_integer(Port), is_atom(Service) -> + gen_server:start_link(?MODULE, [Host, Port, Service, Timeout], []). call(Client, Function, Args) when is_pid(Client), is_atom(Function), is_list(Args) -> @@ -55,12 +58,17 @@ close(Client) when is_pid(Client) -> %% Description: Initiates the server %%-------------------------------------------------------------------- init([Host, Port, Service]) -> + init([Host, Port, Service, infinity]); + +init([Host, Port, Service, Timeout]) -> {ok, Sock} = gen_tcp:connect(Host, Port, [binary, {packet, 0}, {active, false}, {nodelay, true} - ]), + ], + Timeout), + {ok, Transport} = thrift_socket_transport:new(Sock), {ok, BufTransport} = thrift_buffered_transport:new(Transport), {ok, Protocol} = thrift_binary_protocol:new(BufTransport),