diff options
Diffstat (limited to 'src/jobd-master.js')
-rwxr-xr-x | src/jobd-master.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/jobd-master.js b/src/jobd-master.js index 34e03ba..3bdc15a 100755 --- a/src/jobd-master.js +++ b/src/jobd-master.js @@ -114,6 +114,7 @@ function initRequestHandler() { requestHandler.set('run-manual', onRunManual) requestHandler.set('pause', onPause) requestHandler.set('continue', onContinue) + requestHandler.set('send-signal', onSendSignal) } function usage() { @@ -223,3 +224,25 @@ function onContinue(data, requestNo, connection) { return 'ok' } + +/** + * @param {object} data + * @return {Promise<*>} + */ +async function onSendSignal(data) { + const {jobs} = data + + if (!Array.isArray(jobs)) + throw new Error('jobs must be array') + + for (let job of jobs) { + validateObjectSchema(job, [ + // name // type // required + ['id', 'i', true], + ['signal', 'i', true], + ['target', 's', true], + ]) + } + + return await workers.sendSignals(jobs) +}
\ No newline at end of file |