90 lines
3.4 KiB
JavaScript
90 lines
3.4 KiB
JavaScript
const { Worker } = require('worker_threads');
|
|
const moment = require('moment');
|
|
module.exports = (s,config,lang) => {
|
|
const {
|
|
legacyFilterEvents
|
|
} = require('./events/utils.js')(s,config,lang)
|
|
if(config.doCronAsWorker===undefined)config.doCronAsWorker = true;
|
|
const startWorker = () => {
|
|
const pathToWorkerScript = __dirname + `/cron/worker.js`
|
|
const workerProcess = new Worker(pathToWorkerScript,{
|
|
workerData: config
|
|
})
|
|
workerProcess.on('message',function(data){
|
|
if(data.time === 'moment()')data.time = moment();
|
|
switch(data.f){
|
|
case'knexQuery':
|
|
s.knexQuery(...data.args, function(...args){
|
|
workerProcess.postMessage({
|
|
f: 'callback',
|
|
rid: data.rid,
|
|
args,
|
|
})
|
|
});
|
|
break;
|
|
case'debugLog':
|
|
s.debugLog(...data.data)
|
|
break;
|
|
case'systemLog':
|
|
s.systemLog(...data.data)
|
|
break;
|
|
case'filters':
|
|
legacyFilterEvents(data.ff,data)
|
|
break;
|
|
case's.tx':
|
|
s.tx(data.data,data.to)
|
|
break;
|
|
case's.deleteVideo':
|
|
s.deleteVideo(data.file)
|
|
break;
|
|
case's.deleteCloudVideo':
|
|
s.deleteVideo(data.file)
|
|
break;
|
|
case's.deleteFileBinEntry':
|
|
s.deleteFileBinEntry(data.file)
|
|
break;
|
|
case's.onCronGroupBeforeProcessed':
|
|
s.runExtensionsForArray('onCronGroupBeforeProcessed', null, data.args)
|
|
break;
|
|
case's.onCronGroupBeforeProcessedAwaited':
|
|
s.runExtensionsForArrayAwaited('onCronGroupBeforeProcessedAwaited', null, data.args)
|
|
break;
|
|
case's.onCronGroupProcessed':
|
|
s.runExtensionsForArray('onCronGroupProcessed', null, data.args)
|
|
break;
|
|
case's.onCronGroupProcessedAwaited':
|
|
s.runExtensionsForArrayAwaited('onCronGroupProcessedAwaited', null, data.args)
|
|
break;
|
|
case's.setDiskUsedForGroup':
|
|
function doOnMain(){
|
|
s.setDiskUsedForGroup(data.ke,data.size,data.target || undefined)
|
|
}
|
|
if(data.videoRow){
|
|
let storageIndex = s.getVideoStorageIndex(data.videoRow);
|
|
if(storageIndex){
|
|
s.setDiskUsedForGroupAddStorage(data.ke,{
|
|
size: data.size,
|
|
storageIndex: storageIndex
|
|
})
|
|
}else{
|
|
doOnMain()
|
|
}
|
|
}else{
|
|
doOnMain()
|
|
}
|
|
break;
|
|
default:
|
|
s.debugLog('CRON.js MESSAGE : ',data)
|
|
break;
|
|
}
|
|
})
|
|
setTimeout(() => {
|
|
workerProcess.postMessage({
|
|
f: 'init',
|
|
})
|
|
},2000)
|
|
return workerProcess
|
|
}
|
|
if(config.doCronAsWorker === true)startWorker()
|
|
}
|