summaryrefslogtreecommitdiff
path: root/app/relay/runner.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/relay/runner.js')
-rw-r--r--app/relay/runner.js43
1 files changed, 35 insertions, 8 deletions
diff --git a/app/relay/runner.js b/app/relay/runner.js
index deb3aa0..741ef8a 100644
--- a/app/relay/runner.js
+++ b/app/relay/runner.js
@@ -63,8 +63,7 @@ export function status () {
}
}
-export function build_params(module, task) {
- const activity = module.activities[task.activity]
+export function build_params(module, activity, task) {
const interpreter = interpreters[activity.type]
let opt_params;
if (typeof activity.params === 'function') {
@@ -159,7 +158,12 @@ export function run_script(task, cb) {
export function run_task(task, preempt, watch){
const module = modules[task.module]
if (! module) return { type: 'error', error: "No such module: " + task.module }
- const { activity, interpreter, params } = build_params(module, task)
+ const activity = module.activities[task.activity]
+ run_task_with_activity(task, module, activity, preempt, watch)
+}
+
+export function run_task_with_activity(task, module, activity, preempt, watch) {
+ const { interpreter, params } = build_params(module, task)
if (! interpreter) return { type: 'error', error: "No such interpreter: " + activity.interpreter }
if (interpreter.gpu && state.current_gpu_task.status !== 'IDLE') {
@@ -218,19 +222,42 @@ export function run_task(task, preempt, watch){
if (finished) return
finished = true
console.log('task error', subprocess.exitCode, err)
- clear_task(interpreter.gpu, task)
- remote.emit('task_res', { type: 'task_error', task, err })
- set_connected(false)
+ finish({
+ type: 'task_error',
+ task, err,
+ })
})
subprocess.on('close', () => {
if (finished) return
finished = true
console.log('task ended', subprocess.exitCode || '')
- clear_task(interpreter.gpu, task)
- remote.emit('task_res', { type: 'task_finish', task })
set_connected(false)
+ finish({
+ type: 'task_finish',
+ task,
+ })
})
+
+ function finish(task_res){
+ remote.emit('task_res', task_res)
+ clear_task(interpreter.gpu, task)
+ set_connected(false)
+ // remove task from queue
+ // queue.remove_task(task)
+ if (activity.onComplete) {
+ return run_task_with_activity(task, module, activity.onComplete, preempt, watch)
+ }
+ return run_next_task()
+ }
+}
+
+export function get_next_task(){
+ // get next task from the queue...
+ /*
+ const task = queue.get_next_task()
+ return run_task(task)
+ */
}
export function stop_task(task){