From fb9f1bf8e4fcbe8d0954008f352f797011d60eec Mon Sep 17 00:00:00 2001 From: Feng Date: Mon, 26 Oct 2015 09:20:13 +0800 Subject: [PATCH] rate_limit --- src/emqttd.erl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/emqttd.erl b/src/emqttd.erl index eeb5bab4d..09661d6c8 100644 --- a/src/emqttd.erl +++ b/src/emqttd.erl @@ -91,7 +91,8 @@ open_listener({https, Port, Options}) -> mochiweb:start_http(Port, Options, MFArgs). open_listener(Protocol, Port, Options) -> - MFArgs = {emqttd_client, start_link, [env(mqtt)]}, + Rl = rate_limiter(emqttd_opts:g(rate_limit, Options)), + MFArgs = {emqttd_client, start_link, [[{rate_limiter, Rl} | env(mqtt)]]}, esockd:open(Protocol, Port, merge_sockopts(Options) , MFArgs). merge_sockopts(Options) -> @@ -99,6 +100,14 @@ merge_sockopts(Options) -> proplists:get_value(sockopts, Options, [])), emqttd_opts:merge(Options, [{sockopts, SockOpts}]). +%% TODO: will refactor in 0.14.0 release. +rate_limiter(undefined) -> + undefined; +rate_limiter(Config) -> + Bps = fun(S) -> list_to_integer(string:strip(S)) * 1024 end, + [Burst, Rate] = [Bps(S) || S <- string:tokens(Config, ",")], + esockd_rate_limiter:new(Burst, Rate). + %%------------------------------------------------------------------------------ %% @doc Close Listeners %% @end