summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-05-27 00:08:57 +0200
committerJules Laplace <julescarbon@gmail.com>2018-05-27 00:08:57 +0200
commite4957554e777bd9e25097fcb4db40686848a908c (patch)
treeb9517c09038b7425d78a5b397f7f552d7e933a2d /app
parent66dfb9e5ca6b3e2990d9b70314d404074b1be0cb (diff)
killing process
Diffstat (limited to 'app')
-rw-r--r--app/client/socket/socket.task.js4
-rw-r--r--app/client/system/system.reducer.js6
-rw-r--r--app/client/types.js2
-rw-r--r--app/relay/runner.js24
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,
})