aboutsummaryrefslogtreecommitdiffstats
path: root/src/gun.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2015-04-10 12:42:39 +0300
committerLoïc Hoguin <[email protected]>2015-04-10 12:42:39 +0300
commit6676a982ff18d6a6b346f608e7ce313cfccc873e (patch)
treee0103b85fcbea53af3ea5844cd09e98c2f0f8570 /src/gun.erl
parent3c051509d6b211dc4b369ba716b08d24135f29f2 (diff)
downloadgun-6676a982ff18d6a6b346f608e7ce313cfccc873e.tar.gz
gun-6676a982ff18d6a6b346f608e7ce313cfccc873e.tar.bz2
gun-6676a982ff18d6a6b346f608e7ce313cfccc873e.zip
Add functions await_up/{1,2,3} for sync open
Diffstat (limited to 'src/gun.erl')
-rw-r--r--src/gun.erl30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/gun.erl b/src/gun.erl
index b3623eb..074b121 100644
--- a/src/gun.erl
+++ b/src/gun.erl
@@ -48,6 +48,9 @@
-export([await_body/2]).
-export([await_body/3]).
-export([await_body/4]).
+-export([await_up/1]).
+-export([await_up/2]).
+-export([await_up/3]).
%% Flushing gun messages.
-export([flush/1]).
@@ -333,6 +336,33 @@ await_body(ServerPid, StreamRef, Timeout, MRef, Acc) ->
{error, timeout}
end.
+-spec await_up(pid()) -> {ok, http | spdy} | {error, atom()}.
+await_up(ServerPid) ->
+ MRef = monitor(process, ServerPid),
+ Res = await_up(ServerPid, 5000, MRef),
+ demonitor(MRef, [flush]),
+ Res.
+
+-spec await_up(pid(), reference() | timeout()) -> {ok, http | spdy} | {error, atom()}.
+await_up(ServerPid, MRef) when is_reference(MRef) ->
+ await_up(ServerPid, 5000, MRef);
+await_up(ServerPid, Timeout) ->
+ MRef = monitor(process, ServerPid),
+ Res = await_up(ServerPid, Timeout, MRef),
+ demonitor(MRef, [flush]),
+ Res.
+
+-spec await_up(pid(), timeout(), reference()) -> {ok, http | spdy} | {error, atom()}.
+await_up(ServerPid, Timeout, MRef) ->
+ receive
+ {gun_up, ServerPid, Protocol} ->
+ {ok, Protocol};
+ {'DOWN', MRef, process, ServerPid, Reason} ->
+ {error, Reason}
+ after Timeout ->
+ {error, timeout}
+ end.
+
-spec flush(pid() | reference()) -> ok.
flush(ServerPid) when is_pid(ServerPid) ->
flush_pid(ServerPid);