aboutsummaryrefslogtreecommitdiffstats
path: root/src/cowboy.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/cowboy.erl')
-rw-r--r--src/cowboy.erl39
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),