import { dispatch } from '../store' import types from '../types' import { socket } from './socket.connection' let finishTimeout; socket.on('task_res', (data) => { // console.log('task response', data) if (data.task) { dispatch({ type: types.task.update, data: data.task }) } console.log('task', data.type) switch (data.type) { case 'start': // return dispatch({ type: types.system.rpc_connected, runner: data.runner }) break case 'stop': break // begin and finish calls often arrive out of order, if the old task was preempted case 'task_begin': dispatch({ type: types.task.task_begin, task: data.task }) break case 'task_finish': dispatch({ type: types.task.task_finish, task: data.task }) break case 'kill': break case 'stdout': return dispatch({ type: types.system.stdout, data }) break case 'stderr': return dispatch({ type: types.system.stderr, data }) break case 'add': break case 'remove': break case 'start_queue': break case 'stop_queue': break case 'list': break case 'set_priority': break case 'progress': dispatch({ type: types.task.progress, task: data.task }) break case 'epoch': dispatch({ type: types.task.epoch, task: data.task }) break case 'task_error': return console.log('task error', data) default: return console.log('no such task command', data.type) } }) export function emit(type, task={}, opt={}) { socket.emit('task', { type, task, ...opt, }) } export const add_task = (task, opt={}) => emit('add', task, opt) export const remove_task = (task, opt={}) => emit('remove', task, opt) export const start_task = (task, opt={}) => emit('start', task, opt) export const stop_task = (task, opt={}) => emit('stop', task, opt) export const start_queue = (opt={}) => emit('start_queue', {}, opt) export const stop_queue = (opt={}) => emit('stop_queue', {}, opt)