Move the 'MQTT_SOCKOPTS' macro to include/emqttd_protocol.hrl

This commit is contained in:
Feng Lee 2017-02-16 11:22:48 +08:00
parent 1222746b79
commit dbcd79fb74
1 changed files with 15 additions and 18 deletions

View File

@ -1,5 +1,5 @@
%%--------------------------------------------------------------------
%% Copyright (c) 2012-2017 Feng Lee <feng@emqtt.io>.
%% 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 <feng@emqtt.io>").
-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.