Browse Source

ft: 给各种行为加上 守护 模式 该模式下try 捕捉到错误后 并不会杀死进程 而是打印日志

master
SisMaker 1 year ago
parent
commit
d35951a966
7 changed files with 1116 additions and 1085 deletions
  1. +23
    -0
      include/genGbh.hrl
  2. +1
    -1
      rebar.config
  3. +1078
    -1041
      src/gen_apu.erl
  4. +5
    -11
      src/gen_emm.erl
  5. +3
    -10
      src/gen_ipc.erl
  6. +3
    -11
      src/gen_mpp.erl
  7. +3
    -11
      src/gen_srv.erl

+ 23
- 0
include/genGbh.hrl View File

@ -0,0 +1,23 @@
-ifndef(genGbh_H).
-define(genGbh_H, true).
-record(gbhOpts, {
daemon = false :: boolean() %% try catch handleError
}).
-ifdef(debug_gbh).
%% debug
-define(NOT_DEBUG, []).
-define(SYS_DEBUG(Debug, Name, Msg),
case Debug of
?NOT_DEBUG ->
ok;
_ ->
sys:handle_debug(Debug, fun print_event/3, Name, Msg)
end).
-else.
-define(SYS_DEBUG(Debug, Name, Msg), ok).
-endif.
-endif.

+ 1
- 1
rebar.config View File

@ -1 +1 @@
{erl_opts, [no_debug_info, deterministic]}.
{erl_opts, [no_debug_info, {i, "include"}, deterministic]}.

+ 1078
- 1041
src/gen_apu.erl
File diff suppressed because it is too large
View File


+ 5
- 11
src/gen_emm.erl View File

@ -4,6 +4,7 @@
-compile({inline_size, 128}).
-include_lib("kernel/include/logger.hrl").
-include("genGbh.hrl").
-import(maps, [iterator/1, next/1]).
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
@ -36,21 +37,11 @@
, wakeupFromHib/5
%% logger callback
, format_log/1, format_log/2
, format_log/1, format_log/2, print_event/3
]).
-define(STACKTRACE(), element(2, erlang:process_info(self(), current_stacktrace))).
%% debug
-define(NOT_DEBUG, []).
-define(SYS_DEBUG(Debug, Name, Msg),
case Debug of
?NOT_DEBUG ->
Debug;
_ ->
sys:handle_debug(Debug, fun print_event/3, Name, Msg)
end).
-type epmHandler() ::
atom() |
{atom(), term()}.
@ -95,6 +86,7 @@
{'logfile', string()}.
-type startOpt() ::
daemon |
{'timeout', timeout()} |
{'debug', [debug_flag()]} |
{'spawn_opt', [proc_lib:start_spawn_option()]} |
@ -218,6 +210,8 @@ init_it(Starter, Parent, ServerRef, _, _, Options) ->
process_flag(trap_exit, true),
Name = gen:name(ServerRef),
Debug = gen:debug_options(Name, Options),
IsDaemon = lists:member(daemon, Options),
GbhOpts = #gbhOpts{daemon = IsDaemon},
HibernateAfterTimeout = gen:hibernate_after(Options),
proc_lib:init_ack(Starter, {ok, self()}),
receiveIng(Parent, Name, HibernateAfterTimeout, #{}, Debug, false).

+ 3
- 10
src/gen_ipc.erl View File

@ -4,6 +4,7 @@
-compile({inline_size, 128}).
-include_lib("kernel/include/logger.hrl").
-include("genGbh.hrl").
-import(maps, [iterator/1, next/1]).
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
@ -46,6 +47,7 @@
, format_log/1
, format_log/2
, epm_log/1
, print_event/3
]).
% **********************************
@ -71,16 +73,6 @@
-define(CB_FORM_AFTER, 2). %% after
-define(CB_FORM_EVENT, 3). %% event
%% debug
-define(NOT_DEBUG, []).
-define(SYS_DEBUG(Debug, Name, SystemEvent),
case Debug of
?NOT_DEBUG ->
Debug;
_ ->
sys:handle_debug(Debug, fun print_event/3, Name, SystemEvent)
end).
%%%==========================================================================
%%% Interface functions.
%%%==========================================================================
@ -313,6 +305,7 @@
{'via', RegMod :: module(), ViaName :: term()}.
-type startOpt() ::
daemon |
{'timeout', Time :: timeout()} |
{'spawn_opt', [proc_lib:spawn_option()]} |
enterLoopOpt().

+ 3
- 11
src/gen_mpp.erl View File

@ -4,6 +4,7 @@
-compile({inline_size, 128}).
-include_lib("kernel/include/logger.hrl").
-include("genGbh.hrl").
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
@ -35,22 +36,12 @@
, wakeupFromHib/8
%% logger callback
, format_log/1, format_log/2
, format_log/1, format_log/2, print_event/3
]).
-define(STACKTRACE(), element(2, erlang:process_info(self(), current_stacktrace))).
%% debug
-define(NOT_DEBUG, []).
-define(SYS_DEBUG(Debug, Name, Msg),
case Debug of
?NOT_DEBUG ->
Debug;
_ ->
sys:handle_debug(Debug, fun print_event/3, Name, Msg)
end).
-type serverName() ::
{'local', atom()} |
{'global', GlobalName :: term()} |
@ -64,6 +55,7 @@
| {'via', RegMod :: module(), ViaName :: term()}.
-type startOpt() ::
daemon |
{'timeout', Time :: timeout()} |
{'spawn_opt', [proc_lib:spawn_option()]} |
enterLoopOpt().

+ 3
- 11
src/gen_srv.erl View File

@ -4,6 +4,7 @@
-compile({inline_size, 128}).
-include_lib("kernel/include/logger.hrl").
-include("genGbh.hrl").
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
@ -35,22 +36,12 @@
, wakeupFromHib/8
%% logger callback
, format_log/1, format_log/2
, format_log/1, format_log/2, print_event/3
]).
-define(STACKTRACE(), element(2, erlang:process_info(self(), current_stacktrace))).
%% debug
-define(NOT_DEBUG, []).
-define(SYS_DEBUG(Debug, Name, Msg),
case Debug of
?NOT_DEBUG ->
Debug;
_ ->
sys:handle_debug(Debug, fun print_event/3, Name, Msg)
end).
-type serverName() ::
{'local', atom()} |
{'global', GlobalName :: term()} |
@ -64,6 +55,7 @@
| {'via', RegMod :: module(), ViaName :: term()}.
-type startOpt() ::
daemon |
{'timeout', Time :: timeout()} |
{'spawn_opt', [proc_lib:spawn_option()]} |
enterLoopOpt().

Loading…
Cancel
Save