diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/client/socket/socket.task.js | 4 | ||||
| -rw-r--r-- | app/client/system/system.reducer.js | 6 | ||||
| -rw-r--r-- | app/client/types.js | 2 | ||||
| -rw-r--r-- | app/relay/runner.js | 24 |
4 files changed, 23 insertions, 13 deletions
diff --git a/app/client/socket/socket.task.js b/app/client/socket/socket.task.js index 00b310f..0c8429b 100644 --- a/app/client/socket/socket.task.js +++ b/app/client/socket/socket.task.js @@ -10,10 +10,12 @@ socket.on('task_res', (data) => { // return dispatch({ type: types.system.rpc_connected, runner: data.runner }) break case 'task_begin': + return dispatch({ type: types.task.task_begin, data: data.data }) break case 'stop': break case 'task_finish': + return dispatch({ type: types.task.task_finish, data: data.data }) break case 'kill': break @@ -50,7 +52,7 @@ export function start_task(task, opt={}) { }) } -export function stop_task(task) { +export function stop_task(task, opt={}) { socket.emit('task', { type: 'stop', task, diff --git a/app/client/system/system.reducer.js b/app/client/system/system.reducer.js index 2a58cd7..a7ae8d1 100644 --- a/app/client/system/system.reducer.js +++ b/app/client/system/system.reducer.js @@ -144,6 +144,12 @@ const systemReducer = (state = systemInitialState, action) => { stderr: action.data.stderr, } } + case types.task.task_begin: + return { + ...state, + stdout: "", + stderr: "", + } case types.system.stdout: return { ...state, diff --git a/app/client/types.js b/app/client/types.js index 5598e63..97a93c9 100644 --- a/app/client/types.js +++ b/app/client/types.js @@ -11,7 +11,9 @@ export default { }, task: { starting_task: 'TASK_STARTING_TASK', + task_begin: 'TASK_BEGIN', stopping_task: 'TASK_STOPPING_TASK', + task_finish: 'TASK_FINISH', }, socket: { connect: 'SOCKET_CONNECT', diff --git a/app/relay/runner.js b/app/relay/runner.js index f15e39b..039bfe7 100644 --- a/app/relay/runner.js +++ b/app/relay/runner.js @@ -4,7 +4,7 @@ import { execFile, spawn } from 'child_process' import interpreters from './interpreters' import modules from './modules' -import { kill } from 'tree-kill' +import kill from 'tree-kill' import { remote } from './remote' export const state = { @@ -82,28 +82,28 @@ export function run_task(task, preempt, watch){ const { activity, interpreter, params } = build_params(module, task) if (! interpreter) return { type: 'error', error: "No such interpreter: " + activity.interpreter } - if (activity.cpu && state.current_cpu_task) { - if (preempt) { - kill_task(state.current_cpu_task) - console.log('preempting currently running CPU task') - } else { - console.log('already running CPU task') - return { type: 'error', error: 'task already running on cpu' } - } - } else if (state.current_gpu_task) { + if (interpreter.gpu && state.current_gpu_task) { if (preempt) { console.log('preempting currently running GPU task') kill_task(state.current_gpu_task) } else { - console.log('already running GPU task', state.current_gpu_task.pid) + console.log('already running GPU task :(', state.current_gpu_task.pid) return { type: 'error', error: 'task already running on gpu' } } + } else if (!interpreter.gpu && state.current_cpu_task) { + if (preempt) { + console.log('preempting currently running CPU task') + kill_task(state.current_cpu_task) + } else { + console.log('already running CPU task :(') + return { type: 'error', error: 'task already running on cpu' } + } } - console.log(activity, interpreter) console.log('running task', task.activity) console.log(module.cwd) console.log(interpreter.cmd, params) + const subprocess = spawn(interpreter.cmd, params, { cwd: module.cwd, }) |
