summaryrefslogtreecommitdiff
path: root/app/client/socket
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-05-26 21:33:26 +0200
committerJules Laplace <julescarbon@gmail.com>2018-05-26 21:33:26 +0200
commitbe3b2bd56550b71a2ffb7eb1604c1b8c1d2dd4a2 (patch)
treef8b77bcfd10187328b3fadc0de3e1eb6dfa08f8d /app/client/socket
parent3d836c372d7eff1e2b507888f1ff652a30187c54 (diff)
refactor some task stuff
Diffstat (limited to 'app/client/socket')
-rw-r--r--app/client/socket/index.js27
-rw-r--r--app/client/socket/socket.connection.js15
-rw-r--r--app/client/socket/socket.live.js107
-rw-r--r--app/client/socket/socket.system.js33
-rw-r--r--app/client/socket/socket.task.js28
5 files changed, 210 insertions, 0 deletions
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,
+ })
+}