Просмотр исходного кода

Merge branch 'connect_timeout' of git://github.com/heroku/ranch

Loïc Hoguin 11 лет назад
Родитель
Сommit
441687473a
3 измененных файлов с 30 добавлено и 0 удалено
  1. 12 0
      src/ranch_ssl.erl
  2. 13 0
      src/ranch_tcp.erl
  3. 5 0
      src/ranch_transport.erl

+ 12 - 0
src/ranch_ssl.erl

@@ -32,6 +32,7 @@
 -export([accept/2]).
 -export([accept_ack/2]).
 -export([connect/3]).
+-export([connect/4]).
 -export([recv/3]).
 -export([send/2]).
 -export([sendfile/2]).
@@ -189,6 +190,17 @@ connect(Host, Port, Opts) when is_integer(Port) ->
 	ssl:connect(Host, Port,
 		Opts ++ [binary, {active, false}, {packet, raw}]).
 
+%% @private Experimental. Open a connection to the given host and port number.
+%% @see ssl:connect/4
+%% @todo Probably filter Opts?
+-spec connect(inet:ip_address() | inet:hostname(),
+	inet:port_number(), any(), timeout())
+	-> {ok, inet:socket()} | {error, atom()}.
+connect(Host, Port, Opts, Timeout) when is_integer(Port) ->
+	ssl:connect(Host, Port,
+		Opts ++ [binary, {active, false}, {packet, raw}],
+		Timeout).
+
 %% @doc Receive data from a socket in passive mode.
 %% @see ssl:recv/3
 -spec recv(ssl:sslsocket(), non_neg_integer(), timeout())

+ 13 - 0
src/ranch_tcp.erl

@@ -26,6 +26,7 @@
 -export([accept/2]).
 -export([accept_ack/2]).
 -export([connect/3]).
+-export([connect/4]).
 -export([recv/3]).
 -export([send/2]).
 -export([sendfile/2]).
@@ -104,6 +105,18 @@ connect(Host, Port, Opts) when is_integer(Port) ->
 	gen_tcp:connect(Host, Port,
 		Opts ++ [binary, {active, false}, {packet, raw}]).
 
+%% @private Experimental. Open a connection to the given host and port
+%% number with a timeout.
+%% @see gen_tcp:connect/4
+%% @todo Probably filter Opts?
+-spec connect(inet:ip_address() | inet:hostname(),
+	inet:port_number(), any(), timeout())
+	-> {ok, inet:socket()} | {error, atom()}.
+connect(Host, Port, Opts, Timeout) when is_integer(Port) ->
+	gen_tcp:connect(Host, Port,
+		Opts ++ [binary, {active, false}, {packet, raw}],
+		Timeout).
+
 %% @doc Receive data from a socket in passive mode.
 %% @see gen_tcp:recv/3
 -spec recv(inet:socket(), non_neg_integer(), timeout())

+ 5 - 0
src/ranch_transport.erl

@@ -55,6 +55,11 @@
 -callback connect(string(), inet:port_number(), opts())
 	-> {ok, socket()} | {error, atom()}.
 
+%% Experimental. Open a connection to the given host and port number
+%% with a timeout.
+-callback connect(string(), inet:port_number(), opts(), timeout())
+	-> {ok, socket()} | {error, atom()}.
+
 %% Receive data from a socket in passive mode.
 -callback recv(socket(), non_neg_integer(), timeout())
 	-> {ok, any()} | {error, closed | timeout | atom()}.