windows-nt/Source/XPSP1/NT/sdktools/mtscript/scripts/publicdataupdate.js
2020-09-26 16:20:57 +08:00

61 lines
1.8 KiB
JavaScript

/*
This script provides accurately timed update events.
*/
Include('types.js');
Include('utils.js');
var g_strWaitFor = 'publicdataupdateexit';
var g_nMinimumPeriod = 5000; // Minimum wait before updating the same machine twice.
var g_nDelayBetweenMachines = 1000; // Minimum spread between machines
var g_nDelayHandleBuildWaiting = 10000; // Minimum spread between handlebuildwaiting checks
function publicdataupdate_js::OnScriptError(strFile, nLine, nChar, strText, sCode, strSource, strDescription)
{
return CommonOnScriptError("publicdataupdate_js", strFile, nLine, nChar, strText, sCode, strSource, strDescription);
}
function publicdataupdate_js::ScriptMain()
{
var nEvent;
var strMachineName;
var nCur;
var nNow;
var nDelay;
var nLastBuildWaitingTime = 0;
CommonVersionCheck(/* $DROPVERSION: */ "V(########) F(!!!!!!!!!!!!!!)" /* $ */);
LogMsg('ScriptMain()');
do
{
nNow = (new Date()).getTime();
if (nNow - nLastBuildWaitingTime > g_nDelayHandleBuildWaiting)
{
nLastBuildWaitingTime = nNow;
SignalThreadSync("handlebuildwaiting");
}
for(strMachineName in PublicData.aBuild[0].hMachine)
{
if (!PublicData.aBuild[0].hMachine.__isPublicMember(strMachineName))
continue;
SignalThreadSync('Update' + strMachineName);
nEvent = WaitForSync(g_strWaitFor, g_nDelayBetweenMachines);
if (nEvent == 1)
break;
}
nCur = (new Date()).getTime();
nDelay = g_nMinimumPeriod - (nCur - nNow);
if (nDelay < 1)
nDelay = 1;
// If nEvent was set to 1 in the loop, this wait will return immediatly as well.
nEvent = WaitForSync(g_strWaitFor, nDelay);
}
while( nEvent != 1);
LogMsg('ScriptMain() EXIT');
}