57 lines
1.7 KiB
Erlang
57 lines
1.7 KiB
Erlang
%%--------------------------------------------------------------------
|
|
%% Copyright (c) 2021 EMQ Technologies Co., Ltd. All Rights Reserved.
|
|
%%
|
|
%% Licensed under the Apache License, Version 2.0 (the "License");
|
|
%% you may not use this file except in compliance with the License.
|
|
%% You may obtain a copy of the License at
|
|
%%
|
|
%% http://www.apache.org/licenses/LICENSE-2.0
|
|
%%
|
|
%% Unless required by applicable law or agreed to in writing, software
|
|
%% distributed under the License is distributed on an "AS IS" BASIS,
|
|
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
%% See the License for the specific language governing permissions and
|
|
%% limitations under the License.
|
|
%%--------------------------------------------------------------------
|
|
|
|
-module(emqx_machine).
|
|
|
|
-export([ start/0
|
|
, graceful_shutdown/0
|
|
, is_ready/0
|
|
]).
|
|
|
|
-include_lib("emqx/include/logger.hrl").
|
|
|
|
%% @doc EMQ X boot entrypoint.
|
|
start() ->
|
|
case os:type() of
|
|
{win32, nt} -> ok;
|
|
_nix ->
|
|
os:set_signal(sighup, ignore),
|
|
os:set_signal(sigterm, handle) %% default is handle
|
|
end,
|
|
ok = set_backtrace_depth(),
|
|
ekka:start(),
|
|
ok = print_otp_version_warning().
|
|
|
|
graceful_shutdown() ->
|
|
emqx_machine_terminator:graceful_wait().
|
|
|
|
set_backtrace_depth() ->
|
|
{ok, Depth} = application:get_env(emqx_machine, backtrace_depth),
|
|
_ = erlang:system_flag(backtrace_depth, Depth),
|
|
ok.
|
|
|
|
%% @doc Return true if boot is complete.
|
|
is_ready() ->
|
|
emqx_machine_terminator:is_running().
|
|
|
|
-if(?OTP_RELEASE > 22).
|
|
print_otp_version_warning() -> ok.
|
|
-else.
|
|
print_otp_version_warning() ->
|
|
?ULOG("WARNING: Running on Erlang/OTP version ~p. Recommended: 23~n",
|
|
[?OTP_RELEASE]).
|
|
-endif. % OTP_RELEASE > 22
|