aboutsummaryrefslogtreecommitdiff
path: root/src/jobd-master.js
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2023-04-03 13:54:30 +0300
committerEvgeny Zinoviev <me@ch1p.io>2023-04-13 02:19:43 +0300
commita6bdd77f06f4d6e6b7876017d4c29bb41da8545f (patch)
treea8117d611a48e6e49b6b96f1d5b99338ebfba4e1 /src/jobd-master.js
parent0775fb2439a71a9bea3bb6e603c24ddd908a12a3 (diff)
signals supportHEADmaster
Diffstat (limited to 'src/jobd-master.js')
-rwxr-xr-xsrc/jobd-master.js23
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