Selaa lähdekoodia

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

master
SisMaker 1 vuosi sitten
vanhempi
commit
d35951a966
7 muutettua tiedostoa jossa 1116 lisäystä ja 1085 poistoa
  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 Näytä tiedosto

@ -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 Näytä tiedosto

@ -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
Näytä tiedosto


+ 5
- 11
src/gen_emm.erl Näytä tiedosto

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

+ 3
- 10
src/gen_ipc.erl Näytä tiedosto

@ -4,6 +4,7 @@
-compile({inline_size, 128}). -compile({inline_size, 128}).
-include_lib("kernel/include/logger.hrl"). -include_lib("kernel/include/logger.hrl").
-include("genGbh.hrl").
-import(maps, [iterator/1, next/1]). -import(maps, [iterator/1, next/1]).
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]). -import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
@ -46,6 +47,7 @@
, format_log/1 , format_log/1
, format_log/2 , format_log/2
, epm_log/1 , epm_log/1
, print_event/3
]). ]).
% ********************************** % **********************************
@ -71,16 +73,6 @@
-define(CB_FORM_AFTER, 2). %% after -define(CB_FORM_AFTER, 2). %% after
-define(CB_FORM_EVENT, 3). %% event -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. %%% Interface functions.
%%%========================================================================== %%%==========================================================================
@ -313,6 +305,7 @@
{'via', RegMod :: module(), ViaName :: term()}. {'via', RegMod :: module(), ViaName :: term()}.
-type startOpt() :: -type startOpt() ::
daemon |
{'timeout', Time :: timeout()} | {'timeout', Time :: timeout()} |
{'spawn_opt', [proc_lib:spawn_option()]} | {'spawn_opt', [proc_lib:spawn_option()]} |
enterLoopOpt(). enterLoopOpt().

+ 3
- 11
src/gen_mpp.erl Näytä tiedosto

@ -4,6 +4,7 @@
-compile({inline_size, 128}). -compile({inline_size, 128}).
-include_lib("kernel/include/logger.hrl"). -include_lib("kernel/include/logger.hrl").
-include("genGbh.hrl").
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]). -import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
@ -35,22 +36,12 @@
, wakeupFromHib/8 , wakeupFromHib/8
%% logger callback %% 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))). -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() :: -type serverName() ::
{'local', atom()} | {'local', atom()} |
{'global', GlobalName :: term()} | {'global', GlobalName :: term()} |
@ -64,6 +55,7 @@
| {'via', RegMod :: module(), ViaName :: term()}. | {'via', RegMod :: module(), ViaName :: term()}.
-type startOpt() :: -type startOpt() ::
daemon |
{'timeout', Time :: timeout()} | {'timeout', Time :: timeout()} |
{'spawn_opt', [proc_lib:spawn_option()]} | {'spawn_opt', [proc_lib:spawn_option()]} |
enterLoopOpt(). enterLoopOpt().

+ 3
- 11
src/gen_srv.erl Näytä tiedosto

@ -4,6 +4,7 @@
-compile({inline_size, 128}). -compile({inline_size, 128}).
-include_lib("kernel/include/logger.hrl"). -include_lib("kernel/include/logger.hrl").
-include("genGbh.hrl").
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]). -import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
@ -35,22 +36,12 @@
, wakeupFromHib/8 , wakeupFromHib/8
%% logger callback %% 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))). -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() :: -type serverName() ::
{'local', atom()} | {'local', atom()} |
{'global', GlobalName :: term()} | {'global', GlobalName :: term()} |
@ -64,6 +55,7 @@
| {'via', RegMod :: module(), ViaName :: term()}. | {'via', RegMod :: module(), ViaName :: term()}.
-type startOpt() :: -type startOpt() ::
daemon |
{'timeout', Time :: timeout()} | {'timeout', Time :: timeout()} |
{'spawn_opt', [proc_lib:spawn_option()]} | {'spawn_opt', [proc_lib:spawn_option()]} |
enterLoopOpt(). enterLoopOpt().

Ladataan…
Peruuta
Tallenna