From 9be9249f7168e1799b1c6689da44d1efb15667ae Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 26 May 2018 23:15:09 +0200 Subject: modularize... circular dependencies... whatever --- app/relay/runner.js | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'app/relay/runner.js') diff --git a/app/relay/runner.js b/app/relay/runner.js index 9fc2a38..fbc7ad7 100644 --- a/app/relay/runner.js +++ b/app/relay/runner.js @@ -6,15 +6,11 @@ import interpreters from './interpreters' import modules from './modules' import { kill } from 'tree-kill' -var state = { +export const state = { current_cpu_task: null, current_gpu_task: null, } -export function status(){ - return {} -} - export function get_current_cpu_task(){ return state.current_cpu_task } @@ -23,6 +19,18 @@ export function get_current_gpu_task(){ return state.current_gpu_task } +export function get_current_task(processor) { + if (processor === 'cpu') { + return state.current_cpu_task + } else { + return state.current_gpu_task + } +} + +export function status () { + return state +} + export function build_params(module, task) { const activity = module.activities[task.activity] const interpreter = interpreters[activity.type] @@ -65,10 +73,25 @@ export function run_system_command(cmd, cb) { } } -export function run_task(task){ +export function run_task(task, preempt){ const module = modules[task.module] if (! module) throw new Error("No such module") const { activity, interpreter, params } = build_params(module, task) + + if (activity.cpu && state.current_cpu_task) { + if (preempt) { + console.log('preempting currently running GPU task') + } else { + return { type: 'error', error: 'task already running on cpu' } + } + } else { + if (preempt) { + console.log('preempting currently running CPU task') + } else { + return { type: 'error', error: 'task already running on cpu' } + } + } + console.log('running task', activity.name) console.log(activity.interpreter, activity.script, params) const subprocess = spawn(activity.interpreter, params) -- cgit v1.2.3-70-g09d2