소스 검색

fx: config和beam的回调函数分开

master
SisMaker 4 년 전
부모
커밋
3909d00f58
3개의 변경된 파일52개의 추가작업 그리고 25개의 파일을 삭제
  1. +21
    -9
      src/eSync.erl
  2. +27
    -14
      src/sync/esSyncSrv.erl
  3. +4
    -2
      src/sync/esUtils.erl

+ 21
- 9
src/eSync.erl 파일 보기

@ -8,9 +8,12 @@
curInfo/0,
setLog/1,
getLog/0,
getOnsync/0,
setOnsync/0,
setOnsync/1,
getOnMSync/0,
setOnMSync/0,
setOnMSync/1,
getOnCSync/0,
setOnCSync/0,
setOnCSync/1,
swSyncNode/1
]).
@ -47,14 +50,23 @@ setLog(Val) ->
getLog() ->
esSyncSrv:getLog().
getOnsync() ->
esSyncSrv:getOnsync().
getOnMSync() ->
esSyncSrv:getOnMSync().
setOnsync() ->
esSyncSrv:setOnsync(undefined).
setOnMSync() ->
esSyncSrv:setOnMSync(undefined).
setOnsync(Fun) ->
esSyncSrv:setOnsync(Fun).
setOnMSync(Fun) ->
esSyncSrv:setOnMSync(Fun).
getOnCSync() ->
esSyncSrv:getOnCSync().
setOnCSync() ->
esSyncSrv:setOnCSync(undefined).
setOnCSync(Fun) ->
esSyncSrv:setOnCSync(Fun).

+ 27
- 14
src/sync/esSyncSrv.erl 파일 보기

@ -15,8 +15,10 @@
setLog/1,
getLog/0,
curInfo/0,
getOnsync/0,
setOnsync/1,
getOnMSync/0,
setOnMSync/1,
getOnCSync/0,
setOnCSync/1,
swSyncNode/1
]).
@ -39,7 +41,8 @@
, hrlFiles = #{} :: map()
, configs = #{} :: map()
, beams = #{} :: map()
, onSyncFun = undefined
, onMSyncFun = undefined
, onCSyncFun = undefined
, swSyncNode = false
, port = undefined
}).
@ -80,11 +83,17 @@ swSyncNode(IsSync) ->
es_gen_ipc:cast(?SERVER, {miSyncNode, IsSync}),
ok.
getOnsync() ->
es_gen_ipc:call(?SERVER, miGetOnsync).
getOnMSync() ->
es_gen_ipc:call(?SERVER, miGetOnMSync).
setOnsync(Fun) ->
es_gen_ipc:call(?SERVER, {miSetOnSync, Fun}).
setOnMSync(Fun) ->
es_gen_ipc:call(?SERVER, {miSetOnMSync, Fun}).
getOnCSync() ->
es_gen_ipc:call(?SERVER, miGetOnCSync).
setOnCSync(Fun) ->
es_gen_ipc:call(?SERVER, {miSetOnCSync, Fun}).
%% ************************************ API end ***************************
start_link() ->
@ -103,10 +112,14 @@ handleAfter(?None, waiting, State) ->
Port = erlang:open_port({spawn_executable, PortName}, Opts),
{kpS, State#state{port = Port}, {sTimeout, 4000, waitConnOver}}.
handleCall(miGetOnsync, _, #state{onSyncFun = OnSyncFun} = State, _From) ->
{reply, OnSyncFun, State};
handleCall({miSetOnSync, Fun}, _, State, _From) ->
{reply, ok, State#state{onSyncFun = Fun}};
handleCall(miGetOnMSync, _, #state{onMSyncFun = OnMSyncFun} = State, _From) ->
{reply, OnMSyncFun, State};
handleCall({miSetOnMSync, Fun}, _, State, _From) ->
{reply, ok, State#state{onMSyncFun = Fun}};
handleCall(miGetOnCSync, _, #state{onCSyncFun = OnCSyncFun} = State, _From) ->
{reply, OnCSyncFun, State};
handleCall({miSetOnCSync, Fun}, _, State, _From) ->
{reply, ok, State#state{onCSyncFun = Fun}};
handleCall(miCurInfo, _, State, _Form) ->
{reply, {erlang:get(), State}, State};
handleCall(_Request, _, _State, _From) ->
@ -129,14 +142,14 @@ handleCast(miRescan, _, State) ->
handleCast(_Msg, _, _State) ->
kpS_S.
handleInfo({Port, {data, Data}}, Status, #state{srcFiles = Srcs, hrlFiles = Hrls, configs = Configs, beams = Beams, onSyncFun = OnSyncFun, swSyncNode = SwSyncNode} = State) ->
handleInfo({Port, {data, Data}}, Status, #state{srcFiles = Srcs, hrlFiles = Hrls, configs = Configs, beams = Beams, onMSyncFun = OnMSyncFun, onCSyncFun = OnCSyncFun, swSyncNode = SwSyncNode} = State) ->
case Status of
running ->
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(OnSyncFun, CConfigs),
esUtils:reloadChangedMod(CBeams, SwSyncNode, OnSyncFun, []),
esUtils:fireOnsync(OnCSyncFun, CConfigs),
esUtils:reloadChangedMod(CBeams, SwSyncNode, OnMSyncFun, []),
case ?esCfgSync:getv(?compileCmd) of
undefined ->
LastCHrls = esUtils:collIncludeCHrls(maps:keys(CHrls), NewHrls, CHrls, #{}),

+ 4
- 2
src/sync/esUtils.erl 파일 보기

@ -939,12 +939,14 @@ classifyChangeFile([OneFile | LeftFile], Beams, Configs, Hrls, Srcs, ColSrcs, Co
#{AbsFile := OldMTimeSec} ->
case CurMTimeSec =/= OldMTimeSec andalso CurMTimeSec =/= 0 of
true ->
classifyChangeFile(LeftFile, Beams, [AbsFile | Configs], Hrls, Srcs, ColSrcs, ColHrls, ColConfigs#{AbsFile := CurMTimeSec}, ColBeams);
CfgMod = erlang:binary_to_atom(filename:basename(AbsFile, <<".config">>), utf8),
classifyChangeFile(LeftFile, Beams, [CfgMod | Configs], Hrls, Srcs, ColSrcs, ColHrls, ColConfigs#{AbsFile := CurMTimeSec}, ColBeams);
_ ->
classifyChangeFile(LeftFile, Beams, Configs, Hrls, Srcs, ColSrcs, ColHrls, ColConfigs, ColBeams)
end;
_ ->
classifyChangeFile(LeftFile, Beams, [AbsFile | Configs], Hrls, Srcs, ColSrcs, ColHrls, ColConfigs#{AbsFile => CurMTimeSec}, ColBeams)
CfgMod = erlang:binary_to_atom(filename:basename(AbsFile, <<".config">>), utf8),
classifyChangeFile(LeftFile, Beams, [CfgMod | Configs], Hrls, Srcs, ColSrcs, ColHrls, ColConfigs#{AbsFile => CurMTimeSec}, ColBeams)
end;
<<".hrl">> ->
AbsFile = filename:absname(OneFile),

불러오는 중...
취소
저장