Przeglądaj źródła

fx: tay catch 回调函数

master
SisMaker 4 lat temu
rodzic
commit
68e987b777
2 zmienionych plików z 26 dodań i 18 usunięć
  1. +1
    -1
      src/sync/esSyncSrv.erl
  2. +25
    -17
      src/sync/esUtils.erl

+ 1
- 1
src/sync/esSyncSrv.erl Wyświetl plik

@ -148,7 +148,7 @@ handleInfo({Port, {data, Data}}, Status, #state{srcFiles = Srcs, hrlFiles = Hrls
FileList = binary:split(Data, <<"\r\n">>, [global]),
%% beam hrl src
{CBeams, CConfigs, CHrls, CSrcs, NewSrcs, NewHrls, NewConfigs, NewBeams} = esUtils:classifyChangeFile(FileList, [], [], #{}, #{}, Srcs, Hrls, Configs, Beams),
esUtils:fireOnsync(OnCSyncFun, CConfigs),
esUtils:fireOnSync(OnCSyncFun, CConfigs),
esUtils:reloadChangedMod(CBeams, SwSyncNode, OnMSyncFun, []),
case ?esCfgSync:getv(?compileCmd) of
undefined ->

+ 25
- 17
src/sync/esUtils.erl Wyświetl plik

@ -592,29 +592,39 @@ formatError(Module, ErrorDescription) ->
false -> io_lib:format("~s", [ErrorDescription])
end.
fireOnsync(OnsyncFun, Modules) ->
case OnsyncFun of
fireOnSync(OnSyncFun, Modules) ->
case OnSyncFun of
undefined -> ok;
Funs when is_list(Funs) -> onsyncApplyList(Funs, Modules);
Fun -> onsyncApply(Fun, Modules)
Funs when is_list(Funs) -> onSyncApplyList(Funs, Modules);
Fun -> onSyncApply(Fun, Modules)
end.
onsyncApplyList(Funs, Modules) ->
[onsyncApply(Fun, Modules) || Fun <- Funs].
onSyncApplyList(Funs, Modules) ->
[onSyncApply(Fun, Modules) || Fun <- Funs].
onsyncApply({M, F}, Modules) ->
erlang:apply(M, F, [Modules]);
onsyncApply(Fun, Modules) when is_function(Fun) ->
Fun(Modules).
onSyncApply({M, F}, Modules) ->
try erlang:apply(M, F, [Modules])
catch
C:R:S ->
Msg = io_lib:format("apply sync fun ~p:~p(~p) error ~p", [M, F, Modules, {C, R, S}]),
esUtils:logErrors(Msg)
end;
onSyncApply(Fun, Modules) when is_function(Fun) ->
try Fun(Modules)
catch
C:R:S ->
Msg = io_lib:format("apply sync fun ~p(~p) error ~p", [Fun, Modules, {C, R, S}]),
esUtils:logErrors(Msg)
end.
reloadChangedMod([], _SwSyncNode, OnsyncFun, Acc) ->
fireOnsync(OnsyncFun, Acc);
reloadChangedMod([Module | LeftMod], SwSyncNode, OnsyncFun, Acc) ->
reloadChangedMod([], _SwSyncNode, OnSyncFun, Acc) ->
fireOnSync(OnSyncFun, Acc);
reloadChangedMod([Module | LeftMod], SwSyncNode, OnSyncFun, Acc) ->
case code:get_object_code(Module) of
error ->
Msg = io_lib:format("Error loading object code for ~p", [Module]),
esUtils:logErrors(Msg),
reloadChangedMod(LeftMod, SwSyncNode, OnsyncFun, Acc);
reloadChangedMod(LeftMod, SwSyncNode, OnSyncFun, Acc);
{Module, Binary, Filename} ->
case code:load_binary(Module, Filename, Binary) of
{module, Module} ->
@ -632,7 +642,7 @@ reloadChangedMod([Module | LeftMod], SwSyncNode, OnsyncFun, Acc) ->
false ->
ignore
end,
reloadChangedMod(LeftMod, SwSyncNode, OnsyncFun, [Module | Acc])
reloadChangedMod(LeftMod, SwSyncNode, OnSyncFun, [Module | Acc])
end.
getNodes() ->
@ -686,7 +696,6 @@ recompileChangeSrcFile(Iterator, SwSyncNode) ->
ok
end.
erlydtlCompile(SrcFile, Options) ->
F =
fun({outdir, OutDir}, Acc) -> [{out_dir, OutDir} | Acc];
@ -732,7 +741,6 @@ getObjectCode(Module) ->
_ -> {undefined, undefined}
end.
reloadIfNecessary(Module, OldBinary, Binary, Filename) ->
case Binary =/= OldBinary of
true ->

Ładowanie…
Anuluj
Zapisz