From 6da51d453f1c99ccdc141ea316a3c0bc5fa48eac Mon Sep 17 00:00:00 2001 From: David Kebler Date: Sat, 20 Apr 2019 16:57:44 -0700 Subject: [PATCH] 0.1.19 add ack to default socket commands, add socketsListen and consumersListen and private _eventListen methods --- package.json | 2 +- src/base.js | 25 ++++++++++++++++++++++++- src/processing.js | 14 ++++++++------ 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 8fe7c8d..950eb62 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uci/base", - "version": "0.1.18", + "version": "0.1.19", "description": "Multi type and transport JSON packet communication base class. Used in UCI extended classes", "main": "src/base", "scripts": { diff --git a/src/base.js b/src/base.js index 42cc232..6b020d7 100644 --- a/src/base.js +++ b/src/base.js @@ -210,7 +210,7 @@ class Base extends EventEmitter { sends.push(this.socket[name].send.bind(this.socket[name])) } } - if (sends.length === 1) return sends[0](packet) + if (sends.length === 1) return await sends[0](packet) return Promise.all( sends.map(send => { return send(packet) @@ -277,6 +277,14 @@ class Base extends EventEmitter { return found } + socketsListen(event,fn) { + this._eventListen('s',event,fn) + } + consumersListen(event,fn) { + this._eventListen('c',event,fn) + } + + // TODO confirm Object.assign will be ok as it is not a deep copy amendConsumerProcessing(funcs, trans) { if (trans) { @@ -362,6 +370,19 @@ class Base extends EventEmitter { else return init() } + _eventListen(type,event,fn) { + for (let name of Object.keys(this.socket)) { + if (this.socket[name].type === type) { + if (fn==='stop') this.socket[name].removeAllListeners(event) + else { + console.log('adding listener',name,type,event,fn ) + console.log(this.socket[name].name) + this.socket[name].on(event, fn) + } + } + } + } + _transport(name) { return this.socket[name].transport } //getter for socket transport @@ -417,6 +438,8 @@ class Base extends EventEmitter { */ async _packetProcess(socket_name, packet) { + + // TODO Try all added packet processors then defualt before sending back // console.log(socket_name,packet) let processor = packet._processor || this._processors[socket_name] || '_default' diff --git a/src/processing.js b/src/processing.js index 809a5b2..5ff548a 100644 --- a/src/processing.js +++ b/src/processing.js @@ -63,12 +63,14 @@ const namespaces = { const commands ={ s:{ echo: async packet => { - return new Promise( async (resolve) => { - packet.processed = true - packet.cmd = 'reply' - packet.info = 'default socket echo' - return resolve(packet) - }) + packet.processed = true + packet.info = 'default socket echo' + return packet + }, + ack: async packet => { + packet.cmd = 'reply' + packet.ack = true + return packet } }, c:{