diff options
author | Loïc Hoguin <[email protected]> | 2011-10-10 08:20:15 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2011-10-10 08:20:48 +0200 |
commit | dbc577e69baf04822f6cf680a250c1d975b4dec1 (patch) | |
tree | 832b7dfd56cb593f94c5ae71225be18b156816b4 /src | |
parent | fd786ef2334626434737034ce32bcc8c588a7e1f (diff) | |
parent | a800425131e2a4f8468722d69e2bcb50d6ae9932 (diff) | |
download | cowboy-dbc577e69baf04822f6cf680a250c1d975b4dec1.tar.gz cowboy-dbc577e69baf04822f6cf680a250c1d975b4dec1.tar.bz2 cowboy-dbc577e69baf04822f6cf680a250c1d975b4dec1.zip |
Merge remote-tracking branch 'jlouis/issue-71'
Diffstat (limited to 'src')
-rw-r--r-- | src/cowboy.erl | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/cowboy.erl b/src/cowboy.erl index 30730cb..9b07921 100644 --- a/src/cowboy.erl +++ b/src/cowboy.erl @@ -15,7 +15,7 @@ %% @doc Cowboy API to start and stop listeners. -module(cowboy). --export([start_listener/6, stop_listener/1]). +-export([start_listener/6, stop_listener/1, child_spec/6]). %% @doc Start a listener for the given transport and protocol. %% @@ -46,11 +46,8 @@ start_listener(Ref, NbAcceptors, Transport, TransOpts, Protocol, ProtoOpts) when is_integer(NbAcceptors) andalso is_atom(Transport) andalso is_atom(Protocol) -> - supervisor:start_child(cowboy_sup, - {{cowboy_listener_sup, Ref}, {cowboy_listener_sup, start_link, [ - NbAcceptors, Transport, TransOpts, Protocol, ProtoOpts - ]}, - permanent, 5000, supervisor, [cowboy_listener_sup]}). + supervisor:start_child(cowboy_sup, child_spec(Ref, NbAcceptors, + Transport, TransOpts, Protocol, ProtoOpts)). %% @doc Stop a listener identified by <em>Ref</em>. %% @todo Currently request processes aren't terminated with the listener. @@ -62,3 +59,18 @@ stop_listener(Ref) -> {error, Reason} -> {error, Reason} end. + +%% @doc Return a child spec suitable for embedding. +%% When you want to embed cowboy in another application, you can use this +%% function to create a <em>ChildSpec</em> suitable for use in a supervisor. +%% The parameters are the same as in <em>start_listener/6</em> but rather +%% than hooking the listener to the cowboy internal supervisor, it just returns +%% the spec. +-spec child_spec(any(), non_neg_integer(), module(), any(), module(), any()) + -> supervisor:child_spec(). +child_spec(Ref, NbAcceptors, Transport, TransOpts, Protocol, ProtoOpts) + when is_integer(NbAcceptors) andalso is_atom(Transport) + andalso is_atom(Protocol) -> + {{cowboy_listener_sup, Ref}, {cowboy_listener_sup, start_link, [ + NbAcceptors, Transport, TransOpts, Protocol, ProtoOpts + ]}, permanent, 5000, supervisor, [cowboy_listener_sup]}. |