diff --git a/src/emqttd_app.erl b/src/emqttd_app.erl index bdbfc4a54..6f758b870 100644 --- a/src/emqttd_app.erl +++ b/src/emqttd_app.erl @@ -1,5 +1,5 @@ %%-------------------------------------------------------------------- -%% Copyright (c) 2012-2017 Feng Lee . +%% Copyright (c) 2013-2017 EMQ Enterprise, Inc. (http://emqtt.io) %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -18,29 +18,26 @@ -behaviour(application). +-author("Feng Lee "). + -include("emqttd_cli.hrl"). +-include("emqttd_protocol.hrl"). + %% Application callbacks -export([start/2, stop/1]). -export([start_listener/1, stop_listener/1]). -%% MQTT SockOpts --define(MQTT_SOCKOPTS, [binary, {packet, raw}, {reuseaddr, true}, - {backlog, 512}, {nodelay, true}]). +-type(listener() :: {atom(), esockd:listen_on(), [esockd:option()]}). --type listener() :: {atom(), esockd:listen_on(), [esockd:option()]}. +-define(APP, emqttd). %%-------------------------------------------------------------------- %% Application callbacks %%-------------------------------------------------------------------- --spec(start(StartType, StartArgs) -> {ok, pid()} | {ok, pid(), State} | {error, Reason} when - StartType :: normal | {takeover, node()} | {failover, node()}, - StartArgs :: term(), - State :: term(), - Reason :: term()). -start(_StartType, _StartArgs) -> +start(_Type, _Args) -> print_banner(), emqttd_mnesia:start(), {ok, Sup} = emqttd_sup:start_link(), @@ -63,12 +60,11 @@ stop(_State) -> %%-------------------------------------------------------------------- print_banner() -> - ?PRINT("starting emqttd on node '~s'~n", [node()]). + ?PRINT("starting ~s on node '~s'~n", [?APP, node()]). print_vsn() -> {ok, Vsn} = application:get_key(vsn), - {ok, Desc} = application:get_key(description), - ?PRINT("~s ~s is running now~n", [Desc, Vsn]). + ?PRINT("~s ~s is running now~n", [?APP, Vsn]). %%-------------------------------------------------------------------- %% Start Servers @@ -176,14 +172,14 @@ start_listener({Proto, ListenOn, Opts}) when Proto == https; Proto == wss -> mochiweb:start_http('mqtt:wss', ListenOn, Opts, {emqttd_http, handle_request, []}). start_listener(Proto, ListenOn, Opts) -> - {ok, Env} = emqttd:env(protocol), + Env = lists:append(emqttd:env(client, []), emqttd:env(protocol, [])), MFArgs = {emqttd_client, start_link, [Env]}, {ok, _} = esockd:open(Proto, ListenOn, merge_sockopts(Opts), MFArgs). merge_sockopts(Options) -> - SockOpts = emqttd_opts:merge(?MQTT_SOCKOPTS, - proplists:get_value(sockopts, Options, [])), - emqttd_opts:merge(Options, [{sockopts, SockOpts}]). + SockOpts = emqttd_misc:merge_opts( + ?MQTT_SOCKOPTS, proplists:get_value(sockopts, Options, [])), + emqttd_misc:merge_opts(Options, [{sockopts, SockOpts}]). %%-------------------------------------------------------------------- %% Stop Listeners @@ -211,3 +207,4 @@ merge_sockopts_test_() -> ?_assert(merge_sockopts(Opts) == [{sockopts, ?MQTT_SOCKOPTS} | Opts]). -endif. +