Resolved merge conflict

pull/262/head
ioedeveloper 4 years ago committed by yann300
parent 02d721ee3b
commit aae5ab5ead
  1. 262
      src/lib/remixd.js

@ -1,145 +1,145 @@
// 'use strict'
// var EventManager = require('../lib/events')
// var modalDialog = require('../app/ui/modaldialog')
// var yo = require('yo-yo')
'use strict'
var EventManager = require('../lib/events')
var modalDialog = require('../app/ui/modaldialog')
var yo = require('yo-yo')
// class Remixd {
// constructor (port) {
// this.event = new EventManager()
// this.port = port
// this.callbacks = {}
// this.callid = 0
// this.socket = null
// this.connected = false
// this.receiveResponse()
// }
class Remixd {
constructor (port) {
this.event = new EventManager()
this.port = port
this.callbacks = {}
this.callid = 0
this.socket = null
this.connected = false
this.receiveResponse()
}
// online () {
// return this.socket !== null
// }
online () {
return this.socket !== null
}
// close () {
// if (this.socket) {
// this.socket.close()
// this.socket = null
// }
// }
close () {
if (this.socket) {
this.socket.close()
this.socket = null
}
}
// start (cb) {
// if (this.socket) {
// try {
// this.socket.close()
// } catch (e) {}
// }
// this.event.trigger('connecting', [])
// this.socket = new WebSocket('ws://localhost:' + this.port, 'echo-protocol') // eslint-disable-line
start (cb) {
if (this.socket) {
try {
this.socket.close()
} catch (e) {}
}
this.event.trigger('connecting', [])
this.socket = new WebSocket('ws://localhost:' + this.port, 'echo-protocol') // eslint-disable-line
// this.socket.addEventListener('open', (event) => {
// this.connected = true
// this.event.trigger('connected', [event])
// cb()
// })
this.socket.addEventListener('open', (event) => {
this.connected = true
this.event.trigger('connected', [event])
cb()
})
// this.socket.addEventListener('message', (event) => {
// var data = JSON.parse(event.data)
// if (data.type === 'reply') {
// if (this.callbacks[data.id]) {
// this.callbacks[data.id](data.error, data.result)
// delete this.callbacks[data.id]
// }
// this.event.trigger('replied', [data])
// } else if (data.type === 'notification') {
// this.event.trigger('notified', [data])
// } else if (data.type === 'system') {
// if (data.error) {
// this.event.trigger('system', [{
// error: data.error
// }])
// }
// }
// })
this.socket.addEventListener('message', (event) => {
var data = JSON.parse(event.data)
if (data.type === 'reply') {
if (this.callbacks[data.id]) {
this.callbacks[data.id](data.error, data.result)
delete this.callbacks[data.id]
}
this.event.trigger('replied', [data])
} else if (data.type === 'notification') {
this.event.trigger('notified', [data])
} else if (data.type === 'system') {
if (data.error) {
this.event.trigger('system', [{
error: data.error
}])
}
}
})
// this.socket.addEventListener('error', (event) => {
// this.errored(event)
// cb(event)
// })
this.socket.addEventListener('error', (event) => {
this.errored(event)
cb(event)
})
// this.socket.addEventListener('close', (event) => {
// if (event.wasClean) {
// this.connected = false
// this.event.trigger('closed', [event])
// } else {
// this.errored(event)
// }
// this.socket = null
// })
// }
this.socket.addEventListener('close', (event) => {
if (event.wasClean) {
this.connected = false
this.event.trigger('closed', [event])
} else {
this.errored(event)
}
this.socket = null
})
}
// async receiveResponse (requestId) {
// return new Promise((resolve, reject) => {
// this.event.register('replied', (data) => {
// if (data.id === requestId) {
// if (data.error) reject(data.error)
// else resolve(data.result)
// }
// })
// })
// }
async receiveResponse (requestId) {
return new Promise((resolve, reject) => {
this.event.register('replied', (data) => {
if (data.id === requestId) {
if (data.error) reject(data.error)
else resolve(data.result)
}
})
})
}
// errored (event) {
// function remixdDialog () {
// return yo`<div>Connection to Remixd closed. Localhost connection not available anymore.</div>`
// }
// if (this.connected) {
// modalDialog('Lost connection to Remixd!', remixdDialog(), {}, {label: ''})
// }
// this.connected = false
// this.socket = null
// this.event.trigger('errored', [event])
// }
errored (event) {
function remixdDialog () {
return yo`<div>Connection to Remixd closed. Localhost connection not available anymore.</div>`
}
if (this.connected) {
modalDialog('Lost connection to Remixd!', remixdDialog(), {}, {label: ''})
}
this.connected = false
this.socket = null
this.event.trigger('errored', [event])
}
// call (service, fn, args, callback) {
// return new Promise((resolve, reject) => {
// this.ensureSocket((error) => {
// if (error) {
// callback && typeof callback === 'function' && callback(error)
// reject(error)
// return
// }
// if (this.socket && this.socket.readyState === this.socket.OPEN) {
// var data = this.format(service, fn, args)
// this.callbacks[data.id] = callback
// this.socket.send(JSON.stringify(data))
// resolve(data.id)
// } else {
// callback && typeof callback === 'function' && callback('Socket not ready. state:' + this.socket.readyState)
// reject('Socket not ready. state:' + this.socket.readyState)
// }
// })
// })
// }
call (service, fn, args, callback) {
return new Promise((resolve, reject) => {
this.ensureSocket((error) => {
if (error) {
callback && typeof callback === 'function' && callback(error)
reject(error)
return
}
if (this.socket && this.socket.readyState === this.socket.OPEN) {
var data = this.format(service, fn, args)
this.callbacks[data.id] = callback
this.socket.send(JSON.stringify(data))
resolve(data.id)
} else {
callback && typeof callback === 'function' && callback('Socket not ready. state:' + this.socket.readyState)
reject('Socket not ready. state:' + this.socket.readyState)
}
})
})
}
// ensureSocket (cb) {
// if (this.socket) return cb(null, this.socket)
// this.start((error) => {
// if (error) {
// cb(error)
// } else {
// cb(null, this.socket)
// }
// })
// }
ensureSocket (cb) {
if (this.socket) return cb(null, this.socket)
this.start((error) => {
if (error) {
cb(error)
} else {
cb(null, this.socket)
}
})
}
// format (service, fn, args) {
// var data = {
// id: this.callid,
// service: service,
// fn: fn,
// args: args
// }
// this.callid++
// return data
// }
// }
format (service, fn, args) {
var data = {
id: this.callid,
service: service,
fn: fn,
args: args
}
this.callid++
return data
}
}
// module.exports = Remixd
module.exports = Remixd

Loading…
Cancel
Save