From be3b2bd56550b71a2ffb7eb1604c1b8c1d2dd4a2 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 26 May 2018 21:33:26 +0200 Subject: refactor some task stuff --- app/client/socket/index.js | 27 +++++++++ app/client/socket/socket.connection.js | 15 +++++ app/client/socket/socket.live.js | 107 +++++++++++++++++++++++++++++++++ app/client/socket/socket.system.js | 33 ++++++++++ app/client/socket/socket.task.js | 28 +++++++++ 5 files changed, 210 insertions(+) create mode 100644 app/client/socket/index.js create mode 100644 app/client/socket/socket.connection.js create mode 100644 app/client/socket/socket.live.js create mode 100644 app/client/socket/socket.system.js create mode 100644 app/client/socket/socket.task.js (limited to 'app/client/socket') diff --git a/app/client/socket/index.js b/app/client/socket/index.js new file mode 100644 index 0000000..c0fed61 --- /dev/null +++ b/app/client/socket/index.js @@ -0,0 +1,27 @@ +import { store } from '../store' +import types from '../types' + +import { socket } from './socket.connection' +import * as system from './socket.system' +import * as live from './socket.live' + +export default { + socket, + system, + live, +} + +socket.on('status', (data) => { + console.log('got status', data.key, data.value) + store.dispatch({ type: types.socket.status }) + switch (data.key) { + case 'processing': + store.dispatch({ + type: 'SET_PARAM', + ...data, + }) + break + default: + break + } +}) diff --git a/app/client/socket/socket.connection.js b/app/client/socket/socket.connection.js new file mode 100644 index 0000000..4aa039c --- /dev/null +++ b/app/client/socket/socket.connection.js @@ -0,0 +1,15 @@ +import { store } from '../store' +import types from '../types' + +export const socket = io.connect('/client') + +// SOCKET ACTIONS + +socket.on('connect', () => store.dispatch({ type: types.socket.connect })) +socket.on('connect_error', (error) => store.dispatch({ type: types.socket.connect_error, error })) +socket.on('reconnect', (attempt) => store.dispatch({ type: types.socket.reconnect, attempt })) +socket.on('reconnecting', () => store.dispatch({ type: types.socket.reconnecting })) +socket.on('reconnect_error', (error) => store.dispatch({ type: types.socket.reconnect_error, error })) +socket.on('reconnect_failed', (error) => store.dispatch({ type: types.socket.reconnect_failed, error })) +socket.on('disconnect', () => store.dispatch({ type: types.socket.disconnect })) +socket.on('error', (error) => store.dispatch({ type: types.socket.error, error })) diff --git a/app/client/socket/socket.live.js b/app/client/socket/socket.live.js new file mode 100644 index 0000000..c55695f --- /dev/null +++ b/app/client/socket/socket.live.js @@ -0,0 +1,107 @@ +import { dispatch } from '../store' +import types from '../types' +import * as player from '../live/player' + +import { socket } from './socket.connection' + +socket.on('res', (data) => { + console.log(data.cmd) + switch (data.cmd) { + case 'get_last_frame': + if (data.res !== 'working') { + socket.emit('cmd', { + cmd: 'get_last_frame', + }) + } + break + case 'get_params': + store.dispatch({ + type: types.socket.load_params, + opt: data.res, + }) + break + case 'list_checkpoints': + store.dispatch({ + type: types.socket.list_checkpoints, + checkpoints: data.res, + }) + break + case 'list_sequences': + store.dispatch({ + type: types.socket.list_sequences, + sequences: data.res, + }) + break + case 'list_epochs': + store.dispatch({ + type: types.socket.list_epochs, + epochs: data.res, + }) + break + default: + break + } + console.log(data) +}) + +socket.on('frame', player.onFrame) + +export function list_checkpoints() { + socket.emit('cmd', { + cmd: 'list_checkpoints', + }) +} +export function list_epochs(checkpoint_name) { + socket.emit('cmd', { + cmd: 'list_epochs', + payload: checkpoint_name, + }) +} +export function list_sequences() { + socket.emit('cmd', { + cmd: 'list_sequences', + }) +} +export function load_epoch(checkpoint_name, epoch) { + console.log(">> SWITCH CHECKPOINT", checkpoint_name, epoch) + socket.emit('cmd', { + cmd: 'load_epoch', + payload: checkpoint_name + ':' + epoch, + }) +} +export function load_sequence(sequence) { + socket.emit('cmd', { + cmd: 'load_sequence', + payload: sequence, + }) +} +export function seek(frame) { + socket.emit('cmd', { + cmd: 'seek', + payload: frame, + }) +} +export function pause(frame) { + socket.emit('cmd', { + cmd: 'pause', + }) +} +export function play(frame) { + socket.emit('cmd', { + cmd: 'play', + }) +} +export function get_params() { + socket.emit('cmd', { + cmd: 'get_params', + }) +} +export function set_param(key, value) { + socket.emit('cmd', { + cmd: 'set_param', + payload: { + 'key': key, + 'value': value, + } + }) +} \ No newline at end of file diff --git a/app/client/socket/socket.system.js b/app/client/socket/socket.system.js new file mode 100644 index 0000000..0cdc625 --- /dev/null +++ b/app/client/socket/socket.system.js @@ -0,0 +1,33 @@ +import { dispatch } from '../store' +import types from '../types' + +import { socket } from './socket.connection' + +socket.on('system_res', (data) => { + console.log('system response', data) + switch (data.type) { + case 'relay_connected': + return dispatch({ type: types.system.relay_connected }) + case 'relay_disconnected': + return dispatch({ type: types.system.relay_disconnected }) + case 'rpc_connected': + return dispatch({ type: types.system.rpc_connected, runner: data.runner }) + case 'rpc_disconnected': + return dispatch({ type: types.system.rpc_disconnected }) + case 'relay_status': + return dispatch({ type: data.rpc_connected ? types.system.rpc_connected : types.system.rpc_disconnected, runner: data.runner }) + case 'command_output': + return dispatch({ + type: types.system.command_output, + data: data, + }) + break + } +}) + +export function run_system_command(cmd) { + socket.emit('system', { + cmd: 'run_system_command', + payload: cmd, + }) +} diff --git a/app/client/socket/socket.task.js b/app/client/socket/socket.task.js new file mode 100644 index 0000000..936d2bc --- /dev/null +++ b/app/client/socket/socket.task.js @@ -0,0 +1,28 @@ +import { dispatch } from '../store' +import types from '../types' + +import { socket } from './socket.connection' + +socket.on('task_res', (data) => { + console.log('system response', data) + switch (data.type) { + // case 'rpc_connected': + // return dispatch({ type: types.system.rpc_connected, runner: data.runner }) + default: + return console.log('no such task command', data.type) + } +}) + +export function start_task(task) { + socket.emit('task', { + cmd: 'start_task', + task, + }) +} + +export function stop_task(task) { + socket.emit('task', { + cmd: 'stop_task', + task, + }) +} -- cgit v1.2.3-70-g09d2