From 7d9ad960219a95a63f7f9b1b7d3041c1d1923ff1 Mon Sep 17 00:00:00 2001 From: Feng Date: Fri, 9 Sep 2016 22:52:17 +0800 Subject: [PATCH] refactor emqttd_conf --- src/emqttd.erl | 6 +++--- src/emqttd_app.erl | 2 +- src/emqttd_conf.erl | 52 +++++++++++++++++++++++++-------------------- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/src/emqttd.erl b/src/emqttd.erl index e57b56e0d..5221969de 100644 --- a/src/emqttd.erl +++ b/src/emqttd.erl @@ -53,7 +53,7 @@ -define(APP, ?MODULE). %%-------------------------------------------------------------------- -%% Bootstrap, environment, is_running... +%% Bootstrap, environment, configuration, is_running... %%-------------------------------------------------------------------- %% @doc Start emqttd application. @@ -62,10 +62,10 @@ start() -> application:start(?APP). %% @doc Get Config -spec(conf(Key :: atom()) -> any()). -conf(Key) -> gen_conf:value(?APP, Key). +conf(Key) -> emqttd_conf:value(Key). -spec(conf(Key :: atom(), Default :: any()) -> any()). -conf(Key, Default) -> gen_conf:value(?APP, Key, Default). +conf(Key, Default) -> emqttd_conf:value(Key, Default). %% @doc Environment -spec(env(Key:: atom()) -> any()). diff --git a/src/emqttd_app.erl b/src/emqttd_app.erl index 65af78ec3..81f1d329c 100644 --- a/src/emqttd_app.erl +++ b/src/emqttd_app.erl @@ -42,7 +42,7 @@ Reason :: term()). start(_StartType, _StartArgs) -> print_banner(), - gen_conf:init(emqttd), + emqttd_conf:init(), emqttd_mnesia:start(), {ok, Sup} = emqttd_sup:start_link(), start_servers(Sup), diff --git a/src/emqttd_conf.erl b/src/emqttd_conf.erl index 5836f93a4..b3677d6b4 100644 --- a/src/emqttd_conf.erl +++ b/src/emqttd_conf.erl @@ -16,83 +16,90 @@ -module(emqttd_conf). --import(gen_conf, [value/3]). +-export([init/0]). -export([mqtt/0, session/0, queue/0, bridge/0, pubsub/0]). --export([list/1]). +-export([value/1, value/2, list/1]). -define(APP, emqttd). +init() -> gen_conf:init(?APP). + mqtt() -> with_env(mqtt_protocol, [ %% Max ClientId Length Allowed. - {max_clientid_len, value(?APP, mqtt_max_clientid_len, 512)}, + {max_clientid_len, value(mqtt_max_clientid_len, 512)}, %% Max Packet Size Allowed, 64K by default. - {max_packet_size, value(?APP, mqtt_max_packet_size, 65536)}, + {max_packet_size, value(mqtt_max_packet_size, 65536)}, %% Client Idle Timeout. - {client_idle_timeout, value(?APP, mqtt_client_idle_timeout, 30)} + {client_idle_timeout, value(mqtt_client_idle_timeout, 30)} ]). session() -> with_env(mqtt_session, [ %% Max number of QoS 1 and 2 messages that can be “inflight” at one time. %% 0 means no limit - {max_inflight, value(?APP, session_max_inflight, 100)}, + {max_inflight, value(session_max_inflight, 100)}, %% Retry interval for redelivering QoS1/2 messages. - {unack_retry_interval, value(?APP, session_unack_retry_interval, 60)}, + {unack_retry_interval, value(session_unack_retry_interval, 60)}, %% Awaiting PUBREL Timeout - {await_rel_timeout, value(?APP, session_await_rel_timeout, 20)}, + {await_rel_timeout, value(session_await_rel_timeout, 20)}, %% Max Packets that Awaiting PUBREL, 0 means no limit - {max_awaiting_rel, value(?APP, session_max_awaiting_rel, 0)}, + {max_awaiting_rel, value(session_max_awaiting_rel, 0)}, %% Statistics Collection Interval(seconds) - {collect_interval, value(?APP, session_collect_interval, 0)}, + {collect_interval, value(session_collect_interval, 0)}, %% Expired after 2 day (unit: minute) - {expired_after, value(?APP, session_expired_after, 2880)} + {expired_after, value(session_expired_after, 2880)} ]). queue() -> with_env(mqtt_queue, [ %% Type: simple | priority - {type, value(?APP, queue_type, simple)}, + {type, value(queue_type, simple)}, %% Topic Priority: 0~255, Default is 0 - {priority, value(?APP, queue_priority, [])}, + {priority, value(queue_priority, [])}, %% Max queue length. Enqueued messages when persistent client disconnected, %% or inflight window is full. - {max_length, value(?APP, queue_max_length, infinity)}, + {max_length, value(queue_max_length, infinity)}, %% Low-water mark of queued messages - {low_watermark, value(?APP, queue_low_watermark, 0.2)}, + {low_watermark, value(queue_low_watermark, 0.2)}, %% High-water mark of queued messages - {high_watermark, value(?APP, queue_high_watermark, 0.6)}, + {high_watermark, value(queue_high_watermark, 0.6)}, %% Queue Qos0 messages? - {queue_qos0, value(?APP, queue_qos0, true)} + {queue_qos0, value(queue_qos0, true)} ]). bridge() -> with_env(mqtt_bridge, [ - %% TODO: Bridge Queue Size - {max_queue_len, value(?APP, bridge_max_queue_len, 10000)}, + {max_queue_len, value(bridge_max_queue_len, 10000)}, %% Ping Interval of bridge node - {ping_down_interval, value(?APP, bridge_ping_down_interval, 1)} + {ping_down_interval, value(bridge_ping_down_interval, 1)} ]). pubsub() -> with_env(mqtt_pubsub, [ %% PubSub and Router. Default should be scheduler numbers. - {pool_size, value(?APP, pubsub_pool_size, 8)} + {pool_size, value(pubsub_pool_size, 8)} ]). +value(Key) -> + with_env(Key, gen_conf:value(?APP, Key)). + +value(Key, Default) -> + with_env(Key, gen_conf:value(?APP, Key, Default)). + with_env(Key, Conf) -> case application:get_env(?APP, Key) of undefined -> @@ -101,6 +108,5 @@ with_env(Key, Conf) -> Val end. -list(Key) -> - gen_conf:list(?APP, Key). +list(Key) -> gen_conf:list(?APP, Key).