rate_limit
This commit is contained in:
parent
9a590b2f39
commit
fb9f1bf8e4
|
@ -91,7 +91,8 @@ open_listener({https, Port, Options}) ->
|
||||||
mochiweb:start_http(Port, Options, MFArgs).
|
mochiweb:start_http(Port, Options, MFArgs).
|
||||||
|
|
||||||
open_listener(Protocol, Port, Options) ->
|
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).
|
esockd:open(Protocol, Port, merge_sockopts(Options) , MFArgs).
|
||||||
|
|
||||||
merge_sockopts(Options) ->
|
merge_sockopts(Options) ->
|
||||||
|
@ -99,6 +100,14 @@ merge_sockopts(Options) ->
|
||||||
proplists:get_value(sockopts, Options, [])),
|
proplists:get_value(sockopts, Options, [])),
|
||||||
emqttd_opts:merge(Options, [{sockopts, SockOpts}]).
|
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
|
%% @doc Close Listeners
|
||||||
%% @end
|
%% @end
|
||||||
|
|
Loading…
Reference in New Issue