From b2ffff9bec7f9d137ab5abdc3b77203914b5ae63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Wed, 20 Feb 2013 12:14:21 +0100 Subject: Add cowboy:set_env/3 --- src/cowboy.erl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/cowboy.erl b/src/cowboy.erl index 79dbb71..257172d 100644 --- a/src/cowboy.erl +++ b/src/cowboy.erl @@ -18,6 +18,7 @@ -export([start_http/4]). -export([start_https/4]). -export([stop_listener/1]). +-export([set_env/3]). %% @doc Start an HTTP listener. -spec start_http(any(), non_neg_integer(), any(), any()) -> {ok, pid()}. @@ -37,3 +38,16 @@ start_https(Ref, NbAcceptors, TransOpts, ProtoOpts) -spec stop_listener(any()) -> ok. stop_listener(Ref) -> ranch:stop_listener(Ref). + +%% @doc Convenience function for setting an environment value. +%% +%% 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. +set_env(Ref, Name, Value) -> + Opts = ranch:get_protocol_options(Ref), + {_, Env} = lists:keyfind(env, 1, Opts), + Env2 = [{Name, Value}|lists:keydelete(Name, 1, Env)], + Opts2 = lists:keyreplace(env, 1, Opts, {env, Env2}), + ok = ranch:set_protocol_options(Ref, Opts2). -- cgit v1.2.3