Pārlūkot izejas kodu

ft: 优化undef的情况

master
SisMaker pirms 3 gadiem
vecāks
revīzija
548f566911
6 mainītis faili ar 37 papildinājumiem un 24 dzēšanām
  1. +9
    -1
      src/gen_apu.erl
  2. +7
    -2
      src/gen_call.erl
  3. +2
    -7
      src/gen_emm.erl
  4. +2
    -7
      src/gen_ipc.erl
  5. +9
    -1
      src/gen_mpp.erl
  6. +8
    -6
      src/gen_srv.erl

+ 9
- 1
src/gen_apu.erl Parādīt failu

@ -5,7 +5,7 @@
-include_lib("kernel/include/logger.hrl").
-import(gen_call, [gcall/3, gcall/4, greply/2]).
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
-export([
%% API for gen_apu
@ -756,6 +756,9 @@ matchCallMsg(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurStat
catch
throw:Result ->
handleCR(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, Result, From, false);
error:undef ->
try_greply(From, {error, undef}),
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, false);
Class:Reason:Strace ->
terminate(Class, Reason, Strace, Name, Module, NewDebug, Timers, CurState, {{call, From}, Request})
end.
@ -776,6 +779,8 @@ matchCastMsg(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurStat
catch
throw:Result ->
handleCR(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, Result, false, false);
error:undef ->
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, false);
Class:Reason:Strace ->
terminate(Class, Reason, Strace, Name, Module, NewDebug, Timers, CurState, {cast, Cast})
end.
@ -796,6 +801,9 @@ matchMFA(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurState, F
catch
throw:Result ->
handleCR(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, Result, From, true);
error:undef ->
try_greply(From, {error, undef}),
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, false);
Class:Reason:Strace ->
terminate(Class, Reason, Strace, Name, Module, NewDebug, Timers, CurState, {mfa, MFA})
end.

+ 7
- 2
src/gen_call.erl Parādīt failu

@ -1,6 +1,6 @@
-module(gen_call).
-export([gcall/3, gcall/4, greply/2]).
-export([gcall/3, gcall/4, greply/2, try_greply/2]).
-define(default_timeout, 5000).
@ -126,4 +126,9 @@ greply({_To, [alias | Alias] = Tag}, Reply) when is_reference(Alias) ->
greply({_To, [[alias | Alias] | _] = Tag}, Reply) when is_reference(Alias) ->
Alias ! {Tag, Reply}, ok;
greply({To, Tag}, Reply) ->
try To ! {Tag, Reply}, ok catch _:_ -> ok end.
try To ! {Tag, Reply}, ok catch _:_ -> ok end.
try_greply(false, _Msg) ->
ignore;
try_greply(From, Reply) ->
greply(From, Reply).

+ 2
- 7
src/gen_emm.erl Parādīt failu

@ -6,7 +6,7 @@
-include_lib("kernel/include/logger.hrl").
-import(maps, [iterator/1, next/1]).
-import(gen_call, [gcall/3, gcall/4, greply/2]).
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
-export([
%% API for gen_emm
@ -533,7 +533,7 @@ doEpmHandle(EpmHers, EpmId, Func, Event, From) ->
maps:remove(EpmId, EpmHers)
end;
_ ->
try_reply(From, {error, bad_module}),
try_greply(From, {error, bad_module}),
EpmHers
end.
@ -691,11 +691,6 @@ epmTerminate(#epmHer{epmM = EpmM, epmS = State} = EpmHer, Args, LastIn, Reason)
reply(From, Reply) ->
greply(From, Reply).
try_reply(false, _Msg) ->
ignore;
try_reply(From, Reply) ->
greply(From, Reply).
terminate_server(Reason, _Parent, _ServerName, EpmHers) ->
epmStopAll(EpmHers),
exit(Reason).

+ 2
- 7
src/gen_ipc.erl Parādīt failu

@ -6,7 +6,7 @@
-include_lib("kernel/include/logger.hrl").
-import(maps, [iterator/1, next/1]).
-import(gen_call, [gcall/3, gcall/4, greply/2]).
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
-export([
%% API for gen_server or gen_statem behaviour
@ -793,11 +793,6 @@ reply(Replies) when is_list(Replies) ->
reply(From, Reply) ->
greply(From, Reply).
try_reply(false, _Msg) ->
ignore;
try_reply(From, Reply) ->
greply(From, Reply).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% API helpers end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% gen_event start %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
epmRequest({global, Name}, Msg) ->
@ -980,7 +975,7 @@ doEpmHandle(EpmHers, EpmHandler, Func, Event, From) ->
{NewEpmHers, false}
end;
_ ->
try_reply(From, {error, bad_module}),
try_greply(From, {error, bad_module}),
{EpmHers, false}
end.

+ 9
- 1
src/gen_mpp.erl Parādīt failu

@ -5,7 +5,7 @@
-include_lib("kernel/include/logger.hrl").
-import(gen_call, [gcall/3, gcall/4, greply/2]).
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
-export([
%% API for gen_mpp
@ -740,6 +740,9 @@ matchCallMsg(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurStat
catch
throw:Result ->
handleCR(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, Result, From, false);
error:undef ->
try_greply(From, {error, undef}),
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, false);
Class:Reason:Strace ->
terminate(Class, Reason, Strace, Name, Module, NewDebug, Timers, CurState, {{call, From}, Request})
end.
@ -760,6 +763,8 @@ matchCastMsg(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurStat
catch
throw:Result ->
handleCR(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, Result, false, false);
error:undef ->
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, false);
Class:Reason:Strace ->
terminate(Class, Reason, Strace, Name, Module, NewDebug, Timers, CurState, {cast, Cast})
end.
@ -780,6 +785,9 @@ matchMFA(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurState, F
catch
throw:Result ->
handleCR(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, Result, From, true);
error:undef ->
try_greply(From, {error, undef}),
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, false);
Class:Reason:Strace ->
terminate(Class, Reason, Strace, Name, Module, NewDebug, Timers, CurState, {mfa, MFA})
end.

+ 8
- 6
src/gen_srv.erl Parādīt failu

@ -5,7 +5,7 @@
-include_lib("kernel/include/logger.hrl").
-import(gen_call, [gcall/3, gcall/4, greply/2]).
-import(gen_call, [gcall/3, gcall/4, greply/2, try_greply/2]).
-export([
%% API for gen_srv
@ -238,7 +238,6 @@ init_it(Starter, Parent, ServerRef, Module, Args, Options) ->
exit(Error)
end.
%%-----------------------------------------------------------------
%% enter_loop(Module, Options, State, <ServerName>, <TimeOut>) ->_
%%
@ -776,6 +775,9 @@ matchMFA(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurState, F
catch
throw:Result ->
handleCR(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, Result, From, true);
error:undef ->
try_greply(From, {error, undef}),
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, false);
Class:Reason:Strace ->
terminate(Class, Reason, Strace, Name, Module, NewDebug, Timers, CurState, {mfa, MFA})
end.
@ -809,13 +811,13 @@ handleCR(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurState, R
kpS ->
receiveIng(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurState, false);
{reply, Reply} ->
reply(From, Reply),
greply(From, Reply),
NewDebug = ?SYS_DEBUG(Debug, Name, {out, Reply, From, CurState}),
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, CurState, false);
{noreply, NewState} ->
receiveIng(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, NewState, false);
{reply, Reply, NewState} ->
reply(From, Reply),
greply(From, Reply),
NewDebug = ?SYS_DEBUG(Debug, Name, {out, Reply, From, NewState}),
receiveIng(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, NewState, false);
{noreply, NewState, Actions} ->
@ -823,7 +825,7 @@ handleCR(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurState, R
{stop, Reason, NewState} ->
terminate(exit, Reason, ?STACKTRACE(), Name, Module, Debug, Timers, NewState, {return, stop});
{reply, Reply, NewState, Actions} ->
reply(From, Reply),
greply(From, Reply),
NewDebug = ?SYS_DEBUG(Debug, Name, {out, Reply, From, NewState}),
loopEntry(Parent, Name, Module, HibernateAfterTimeout, NewDebug, Timers, NewState, listify(Actions));
{stopReply, Reason, Reply, NewState} ->
@ -831,7 +833,7 @@ handleCR(Parent, Name, Module, HibernateAfterTimeout, Debug, Timers, CurState, R
try
terminate(exit, Reason, ?STACKTRACE(), Name, Module, NewDebug, Timers, NewState, {return, stop_reply})
after
_ = reply(From, Reply)
_ = greply(From, Reply)
end;
_AnyRet ->
case IsAnyRet of

Notiek ielāde…
Atcelt
Saglabāt