From 6d1344319a208412afa3d32f98d1b9043ff90eb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Thu, 16 May 2013 17:56:45 +0200 Subject: Add cowboy_protocol:opts() type Should improve the detection of wrong protocol options. --- src/cowboy.erl | 6 ++++-- src/cowboy_protocol.erl | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/cowboy.erl b/src/cowboy.erl index 375f924..f591333 100644 --- a/src/cowboy.erl +++ b/src/cowboy.erl @@ -37,14 +37,16 @@ -export_type([onresponse_fun/0]). %% @doc Start an HTTP listener. --spec start_http(any(), non_neg_integer(), any(), any()) -> {ok, pid()}. +-spec start_http(any(), non_neg_integer(), any(), + 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(any(), non_neg_integer(), any(), + cowboy_protocol:opts()) -> {ok, pid()}. start_https(Ref, NbAcceptors, TransOpts, ProtoOpts) when is_integer(NbAcceptors), NbAcceptors > 0 -> ranch:start_listener(Ref, NbAcceptors, diff --git a/src/cowboy_protocol.erl b/src/cowboy_protocol.erl index 4874e9a..8a0ff17 100644 --- a/src/cowboy_protocol.erl +++ b/src/cowboy_protocol.erl @@ -56,6 +56,20 @@ -export([parse_request/3]). -export([resume/6]). +-type opts() :: [{compress, boolean()} + | {env, cowboy_middleware:env()} + | {max_empty_lines, non_neg_integer()} + | {max_header_name_length, non_neg_integer()} + | {max_header_value_length, non_neg_integer()} + | {max_headers, non_neg_integer()} + | {max_keepalive, non_neg_integer()} + | {max_request_line_length, non_neg_integer()} + | {middlewares, [module()]} + | {onrequest, cowboy:onrequest_fun()} + | {onresponse, cowboy:onresponse_fun()} + | {timeout, timeout()}]. +-export_type([opts/0]). + -record(state, { socket :: inet:socket(), transport :: module(), @@ -78,7 +92,7 @@ %% API. %% @doc Start an HTTP protocol process. --spec start_link(any(), inet:socket(), module(), any()) -> {ok, pid()}. +-spec start_link(any(), inet:socket(), module(), opts()) -> {ok, pid()}. start_link(Ref, Socket, Transport, Opts) -> Pid = spawn_link(?MODULE, init, [Ref, Socket, Transport, Opts]), {ok, Pid}. @@ -94,7 +108,7 @@ get_value(Key, Opts, Default) -> end. %% @private --spec init(any(), inet:socket(), module(), any()) -> ok. +-spec init(any(), inet:socket(), module(), opts()) -> ok. init(Ref, Socket, Transport, Opts) -> Compress = get_value(compress, Opts, false), MaxEmptyLines = get_value(max_empty_lines, Opts, 5), -- cgit v1.2.3