Browse Source

ft:测试修改

master
SisMaker 7 months ago
parent
commit
95e5bf4868
3 changed files with 22 additions and 16 deletions
  1. +1
    -1
      src/Faw/fwUtil.erl
  2. +9
    -7
      src/Faw/fwWTP.erl
  3. +12
    -8
      src/eFaw.erl

+ 1
- 1
src/Faw/fwUtil.erl View File

@ -22,7 +22,7 @@ initCfg(Kvs) ->
].
initWParam(FName, IsTmp) ->
#wParam{fName = FName, fNameTid = persistent_term:get(FName), mod = FName:getV(?wMod), isTmp = IsTmp}.
#wParam{fName = FName, fNameTid = ?IIF(is_boolean(IsTmp), persistent_term:get(FName), undefined), mod = FName:getV(?wMod), isTmp = IsTmp}.
tryWorkLoop(#wParam{fName = FName, fNameTid = FNameTid, mod = Mod, isTmp = IsTmp} = WParam) ->
Task = eLfq:tryOut(FNameTid),

+ 9
- 7
src/Faw/fwWTP.erl View File

@ -40,9 +40,9 @@ init([FName, IsTmp]) ->
{ok, #state{wParam = fwUtil:initWParam(FName, IsTmp)}}
end.
handleAfter(0, #state{wParam = WParam} = State) ->
NewState = fwUtil:tryWorkLoop(WParam, State),
{noreply, NewState}.
handleAfter(0, #state{wParam = WParam}) ->
fwUtil:tryWorkLoop(WParam),
kpS.
handleCall({mDoWork, Work}, #state{wParam = #wParam{fName = FName, mod = Mod, isTmp = IsTmp}} = _State, FROM) ->
try Mod:work(Work) of
@ -102,10 +102,12 @@ code_change(_OldVsn, State, _Extra) ->
{ok, State}.
work(task1) ->
task1;
io:format("IMY*****************do work ~p~n", [task1]),
dotask1;
work(task2) ->
task2;
io:format("IMY***************** do work ~p~n", [task1]),
dotask2;
work(_Task) ->
timer:sleep(1),
% io:format("work out ~p ~p ~n",[self(), _Task]),
_Task.
io:format("IMY***************** do work ~p ~p ~n",[self(), _Task]),
{do, _Task}.

+ 12
- 8
src/eFaw.erl View File

@ -51,17 +51,17 @@ openW(WName, Kvs) ->
},
case supervisor:start_child(eFaw_sup, FChildSpec) of
{ok, _Pid} = Ret ->
NameList = [{Idx, workerName(Idx)} || Idx <- lists:seq(1, WFCnt)],
NameList = [{Idx, wWorkerName(WName, Idx)} || Idx <- lists:seq(1, WFCnt)],
[supervisor:start_child(WName, [WorkName, worker]) || {_Idx, WorkName} <- NameList],
fwKvsToBeam:load(WName, [CfgKvs | NameList]),
fwKvsToBeam:load(WName, CfgKvs ++ NameList),
Ret;
ErrRet ->
?FwErr("open factory error ~p~n", [ErrRet]),
?FwErr("open worker error ~p~n", [ErrRet]),
ErrRet
end.
workerName(Idx) ->
binary_to_atom(<<"$fawWork_", (integer_to_binary(Idx))/binary>>).
wWorkerName(WName, Idx) ->
binary_to_atom(<<"$wWork_", (atom_to_binary(WName))/binary, (integer_to_binary(Idx))/binary>>).
closeW(WName) ->
supervisor:terminate_child(eFaw_sup, WName),
@ -137,7 +137,7 @@ openF(FName, Kvs) ->
_ ->
ignore
end,
FChildSpec = #{
id => FName,
start => {fwWSup, start_link, [FName, FName:getV(?wMod)]},
@ -157,7 +157,8 @@ openF(FName, Kvs) ->
end.
hireW(WorkerNum, FName, IsTmp) when is_integer(WorkerNum), WorkerNum > 0 ->
case supervisor:start_child(FName, [IsTmp]) of
FWorkerName = fWorkerName(FName, WorkerNum),
case supervisor:start_child(FName, [FWorkerName, IsTmp]) of
{ok, _Pid} ->
ignore;
ErrRet ->
@ -167,6 +168,9 @@ hireW(WorkerNum, FName, IsTmp) when is_integer(WorkerNum), WorkerNum > 0 ->
hireW(_WorkerNum, _FName, _IsTmp) ->
ok.
fWorkerName(FName, Idx) ->
binary_to_atom(<<"$fWork_", (atom_to_binary(FName))/binary, (integer_to_binary(Idx))/binary>>).
closeF(FName) ->
supervisor:terminate_child(eFaw_sup, FName),
supervisor:delete_child(eFaw_sup, FName),
@ -183,7 +187,7 @@ inWork(FName, Work) ->
FTMax = FName:getV(?fTMax),
FTLfl = FName:getV(?fTLfl),
WFCnt = FName:getV(?wFCnt),
if
FTaskLen > FTMax ->
%% The factory is overloaded

Loading…
Cancel
Save