61 lines
1.8 KiB
JavaScript
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');
|
|
}
|