diff options
author | Loïc Hoguin <[email protected]> | 2013-02-20 12:14:21 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2013-02-20 12:14:21 +0100 |
commit | b2ffff9bec7f9d137ab5abdc3b77203914b5ae63 (patch) | |
tree | a4d22508071427e25546068b81db620dcb3a52f9 /src/cowboy.erl | |
parent | 76b5cfea3f4a755b31a95b24176afeb87adaf442 (diff) | |
download | cowboy-b2ffff9bec7f9d137ab5abdc3b77203914b5ae63.tar.gz cowboy-b2ffff9bec7f9d137ab5abdc3b77203914b5ae63.tar.bz2 cowboy-b2ffff9bec7f9d137ab5abdc3b77203914b5ae63.zip |
Add cowboy:set_env/3
Diffstat (limited to 'src/cowboy.erl')
-rw-r--r-- | src/cowboy.erl | 14 |
1 files changed, 14 insertions, 0 deletions
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). |