diff options
Diffstat (limited to 'src/cowboy.erl')
-rw-r--r-- | src/cowboy.erl | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/src/cowboy.erl b/src/cowboy.erl index 257172d..16445e1 100644 --- a/src/cowboy.erl +++ b/src/cowboy.erl @@ -17,25 +17,56 @@ -export([start_http/4]). -export([start_https/4]). +-export([start_spdy/4]). -export([stop_listener/1]). -export([set_env/3]). +-type http_headers() :: [{binary(), iodata()}]. +-export_type([http_headers/0]). + +-type http_status() :: non_neg_integer() | binary(). +-export_type([http_status/0]). + +-type http_version() :: 'HTTP/1.1' | 'HTTP/1.0'. +-export_type([http_version/0]). + +-type onrequest_fun() :: fun((Req) -> Req). +-export_type([onrequest_fun/0]). + +-type onresponse_fun() :: + fun((http_status(), http_headers(), iodata(), Req) -> Req). +-export_type([onresponse_fun/0]). + %% @doc Start an HTTP listener. --spec start_http(any(), non_neg_integer(), any(), any()) -> {ok, pid()}. +-spec start_http(ranch:ref(), non_neg_integer(), ranch_tcp:opts(), + cowboy_protocol:opts()) -> {ok, pid()}. start_http(Ref, NbAcceptors, TransOpts, ProtoOpts) when is_integer(NbAcceptors), NbAcceptors > 0 -> ranch:start_listener(Ref, NbAcceptors, ranch_tcp, TransOpts, cowboy_protocol, ProtoOpts). %% @doc Start an HTTPS listener. --spec start_https(any(), non_neg_integer(), any(), any()) -> {ok, pid()}. +-spec start_https(ranch:ref(), non_neg_integer(), ranch_ssl:opts(), + cowboy_protocol:opts()) -> {ok, pid()}. start_https(Ref, NbAcceptors, TransOpts, ProtoOpts) when is_integer(NbAcceptors), NbAcceptors > 0 -> ranch:start_listener(Ref, NbAcceptors, ranch_ssl, TransOpts, cowboy_protocol, ProtoOpts). +%% @doc Start a SPDY listener. +-spec start_spdy(any(), non_neg_integer(), any(), any()) -> {ok, pid()}. +start_spdy(Ref, NbAcceptors, TransOpts, ProtoOpts) + when is_integer(NbAcceptors), NbAcceptors > 0 -> + TransOpts2 = [ + {connection_type, supervisor}, + {next_protocols_advertised, + [<<"spdy/3">>, <<"http/1.1">>, <<"http/1.0">>]} + |TransOpts], + ranch:start_listener(Ref, NbAcceptors, + ranch_ssl, TransOpts2, cowboy_spdy, ProtoOpts). + %% @doc Stop a listener. --spec stop_listener(any()) -> ok. +-spec stop_listener(ranch:ref()) -> ok. stop_listener(Ref) -> ranch:stop_listener(Ref). @@ -44,7 +75,7 @@ stop_listener(Ref) -> %% Allows you to update live an environment value used by middlewares. %% This function is primarily intended to simplify updating the dispatch %% list used for routing. --spec set_env(any(), atom(), any()) -> ok. +-spec set_env(ranch:ref(), atom(), any()) -> ok. set_env(Ref, Name, Value) -> Opts = ranch:get_protocol_options(Ref), {_, Env} = lists:keyfind(env, 1, Opts), |