Selaa lähdekoodia

适配fileSync修改

master
SisMaker 4 vuotta sitten
vanhempi
commit
388b267b16
3 muutettua tiedostoa jossa 62 lisäystä ja 3 poistoa
  1. +2
    -0
      erlSync.sample.config
  2. +13
    -1
      include/erlSync.hrl
  3. +47
    -2
      src/sync/esScanner.erl

+ 2
- 0
erlSync.sample.config Näytä tiedosto

@ -11,6 +11,8 @@
%% 对比编译erl hrl文件的间隔时间
{compareSrcFileTime, 2000},
{listenPort, 12369},
%% 编译和加载以及其他一些日志的提示级别设置
%% 有效值: all | none | [success | warnings | errors]
%% 默认值: all

+ 13
- 1
include/erlSync.hrl Näytä tiedosto

@ -2,17 +2,29 @@
-define(gTimeout(Type, Time), {gTimeout, {doSync, Type}, Time, Type}).
-define(TCP_DEFAULT_OPTIONS, [
binary
, {packet, 4}
, {active, true}
, {reuseaddr, true}
, {nodelay, false}
, {delay_send, true}
, {send_timeout, 15000}
, {keepalive, true}
, {exit_on_close, true}]).
-define(Log, log).
-define(moduleTime, moduleTime).
-define(srcDirTime, srcDirTime).
-define(srcFileTime, srcFileTime).
-define(compareBeamTime, compareBeamTime).
-define(compareSrcFileTime, compareSrcFileTime).
-define(listenPort, listenPort).
-define(srcDirs, srcDirs).
-define(onlyMods, onlyMods).
-define(excludedMods, excludedMods).
-define(descendant, descendant).
-define(CfgList, [{?Log, all}, {?moduleTime, 30000}, {?srcDirTime, 6000}, {?srcFileTime, 6000}, {?compareBeamTime, 4000}, {?compareSrcFileTime, 4000}, {?srcDirs, undefined}, {?onlyMods, []}, {?excludedMods, []}, {?descendant, fix}]).
-define(CfgList, [{?Log, all}, {?moduleTime, 30000}, {?srcDirTime, 6000}, {?srcFileTime, 6000}, {?compareBeamTime, 4000}, {?compareSrcFileTime, 4000}, {?listenPort, 12369}, {?srcDirs, undefined}, {?onlyMods, []}, {?excludedMods, []}, {?descendant, fix}]).
-define(esCfgSync, esCfgSync).

+ 47
- 2
src/sync/esScanner.erl Näytä tiedosto

@ -24,6 +24,7 @@
-export([
init/1,
handleCall/4,
handleAfter/3,
handleCast/3,
handleInfo/3,
handleOnevent/4,
@ -44,6 +45,8 @@
, srcFileTimes = undefined :: [{file:filename(), timestamp()}] | undefined
, onsyncFun = undefined
, swSyncNode = false
, sockMod
, sock
}).
%% ************************************ API start ***************************
@ -98,7 +101,7 @@ setOnsync(Fun) ->
start_link() ->
gen_ipc:start_link({local, ?SERVER}, ?MODULE, [], []).
%% status :: running | pause
%% status :: waiting | running | pause
init([]) ->
erlang:process_flag(trap_exit, true),
loadCfg(),
@ -109,7 +112,28 @@ init([]) ->
_ ->
ignore
end,
{ok, running, #state{}}.
{ok, waiting, #state{}, {doAfter, 0}}.
handleAfter(_, waiting, State) ->
%% tcp
ListenPort = ?esCfgSync:getv(?listenPort),
case gen_tcp:listen(ListenPort, ?TCP_DEFAULT_OPTIONS) of
{ok, LSock} ->
os:cmd("./priv/fileSync \"./\"" ++ integer_to_list(ListenPort)),
case prim_inet:async_accept(LSock, -1) of
{ok, _Ref} ->
{ok, SockMod} = inet_db:lookup_socket(LSock),
{kpS, State#state{sockMod = SockMod}, {sTimeout, 2000}};
{error, Reason} ->
Msg = io_lib:format("init prim_inet:async_accept error ~p~n", [Reason]),
esUtils:logErrors(Msg),
{kpS, State, {sTimeout, 2000}}
end;
{error, Reason} ->
Msg = io_lib:format("failed to listen on ~p - ~p (~s) ~n", [ListenPort, Reason, inet:format_error(Reason)]),
esUtils:logErrors(Msg),
{kpS, State, {sTimeout, 2000}}
end.
handleCall(miGetOnsync, _, #state{onsyncFun = OnSync} = State, _From) ->
{reply, OnSync, State};
@ -201,6 +225,27 @@ handleCast({miSyncNode, IsSync}, _, State) ->
handleCast(_Msg, _, _State) ->
kpS_S.
handleInfo({inet_async, _LSock, _Ref, Msg}, waiting, #state{sockMod = SockMod} = State) ->
case Msg of
{ok, Sock} ->
%% make it look like gen_tcp:accept
inet_db:register_socket(Sock, SockMod),
{nextS, running, State#state{sock = Sock}};
{error, closed} ->
Msg = io_lib:format("error, closed listen sock error ~p~n",[closed]),
esUtils:logErrors(Msg),
{stop, normal};
{error, Reason} ->
Msg = io_lib:format("listen sock error ~p~n",[Reason]),
esUtils:logErrors(Msg),
{stop, {lsock, Reason}}
end;
handleInfo({tcp, Socket, Data}, running, State) ->
kpS_S;
handleInfo({tcp_closed, Socket}, running, State) ->
kpS_S;
handleInfo({tcp_error, Socket, Reason},running, State) ->
kpS_S;
handleInfo(_Msg, _, _State) ->
kpS_S.

Ladataan…
Peruuta
Tallenna