Feng před 10 roky
rodič
revize
fb9f1bf8e4
1 změnil soubory, kde provedl 10 přidání a 1 odebrání
  1. 10 1
      src/emqttd.erl

+ 10 - 1
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