Author: dreiss
Date: Tue Jun 10 18:01:13 2008
New Revision: 666443

URL: http://svn.apache.org/viewvc?rev=666443&view=rev
Log:
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

Modified:
    incubator/thrift/trunk/lib/alterl/src/thrift_client.erl

Modified: incubator/thrift/trunk/lib/alterl/src/thrift_client.erl
URL: 
http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/alterl/src/thrift_client.erl?rev=666443&r1=666442&r2=666443&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/alterl/src/thrift_client.erl (original)
+++ incubator/thrift/trunk/lib/alterl/src/thrift_client.erl Tue Jun 10 18:01:13 
2008
@@ -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 @@
 %% 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),


Reply via email to