parent
41df7bb8f6
commit
2a62d63b4f
@ -1,72 +0,0 @@ |
|||||||
const Duplex = require('readable-stream').Duplex |
|
||||||
const inherits = require('util').inherits |
|
||||||
|
|
||||||
module.exports = StreamProvider |
|
||||||
|
|
||||||
|
|
||||||
inherits(StreamProvider, Duplex) |
|
||||||
|
|
||||||
function StreamProvider(){ |
|
||||||
Duplex.call(this, { |
|
||||||
objectMode: true, |
|
||||||
}) |
|
||||||
|
|
||||||
this._payloads = {} |
|
||||||
} |
|
||||||
|
|
||||||
// public
|
|
||||||
|
|
||||||
StreamProvider.prototype.send = function(payload){ |
|
||||||
throw new Error('StreamProvider - does not support synchronous RPC calls. called: "'+payload.method+'"') |
|
||||||
} |
|
||||||
|
|
||||||
StreamProvider.prototype.sendAsync = function(payload, callback){ |
|
||||||
// console.log('StreamProvider - sending payload', payload)
|
|
||||||
var id = payload.id |
|
||||||
if (Array.isArray(payload)) { |
|
||||||
id = 'batch'+payload[0].id |
|
||||||
} |
|
||||||
this._payloads[id] = [payload, callback] |
|
||||||
// console.log('payload for plugin:', payload)
|
|
||||||
this.push(payload) |
|
||||||
} |
|
||||||
|
|
||||||
StreamProvider.prototype.isConnected = function(){ |
|
||||||
return true |
|
||||||
} |
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
StreamProvider.prototype._onResponse = function(response){ |
|
||||||
// console.log('StreamProvider - got response', payload)
|
|
||||||
var id = response.id |
|
||||||
if (Array.isArray(response)) { |
|
||||||
id = 'batch'+response[0].id |
|
||||||
} |
|
||||||
var data = this._payloads[id] |
|
||||||
if (!data) throw new Error('StreamProvider - Unknown response id') |
|
||||||
delete this._payloads[id] |
|
||||||
var payload = data[0] |
|
||||||
var callback = data[1] |
|
||||||
|
|
||||||
// logging
|
|
||||||
var res = Array.isArray(response) ? response : [response] |
|
||||||
// ;(Array.isArray(payload) ? payload : [payload]).forEach(function(payload, index){
|
|
||||||
// console.log('plugin response:', payload.id, payload.method, payload.params, '->', res[index].result)
|
|
||||||
// })
|
|
||||||
|
|
||||||
callback(null, response) |
|
||||||
} |
|
||||||
|
|
||||||
// stream plumbing
|
|
||||||
|
|
||||||
StreamProvider.prototype._read = noop |
|
||||||
|
|
||||||
StreamProvider.prototype._write = function(msg, encoding, cb){ |
|
||||||
this._onResponse(msg) |
|
||||||
cb() |
|
||||||
} |
|
||||||
|
|
||||||
// util
|
|
||||||
|
|
||||||
function noop(){} |
|
Loading…
Reference in new issue