diff --git a/lib/bitcoind.js b/lib/bitcoind.js index bddb7c14..93a7a149 100644 --- a/lib/bitcoind.js +++ b/lib/bitcoind.js @@ -159,12 +159,57 @@ Bitcoin.prototype.start = function(options, callback) { setImmediate(function() { self.emit('packet:' + packet.name, packet); self.emit('packet', packet); - // if (packet.name === 'block' || packet.name === 'tx') { - // self.emit(packet.name, packet.block || packet.tx); - // if (packet.tx && !packet.tx.blockhash) { - // self.emit('mptx', packet.tx); - // } - // } + if (packet.name === 'version') { + self.emit(packet.name, packet); + self.emit('peer', packet); + } else if (packet.name === 'verack') { + self.emit(packet.name, packet); + } else if (packet.name === 'addr') { + self.emit(packet.name, packet.addresses); + } else if (packet.name === 'inv') { + self.emit(packet.name, packet); + } else if (packet.name === 'getdata') { + self.emit(packet.name, packet); + } else if (packet.name === 'getblocks') { + self.emit(packet.name, packet); + } else if (packet.name === 'getheaders') { + self.emit(packet.name, packet); + } else if (packet.name === 'tx') { + if (!packet.tx.blockhash) { + packet.name = 'mptx'; + } + self.emit(packet.name, bitcoind.tx(packet.tx)); + } else if (packet.name === 'block') { + var block = bitcoind.block(packet.block); + self.emit(packet.name, block); + block.tx.forEach(function(tx) { + setImmediate(function() { + self.emit('tx', tx); + self.emit('parsed', tx); + }); + }); + } else if (packet.name === 'getaddr') { + self.emit(packet.name, packet); + } else if (packet.name === 'mempool') { + self.emit(packet.name, packet); + } else if (packet.name === 'ping') { + self.emit(packet.name, packet); + } else if (packet.name === 'pong') { + self.emit(packet.name, packet); + } else if (packet.name === 'alert') { + self.emit(packet.name, packet); + } else if (packet.name === 'filterload') { + self.emit(packet.name, packet); + } else if (packet.name === 'filteradd') { + self.emit(packet.name, packet); + } else if (packet.name === 'filterclear') { + self.emit(packet.name, packet); + } else if (packet.name === 'reject') { + self.emit(packet.name, packet); + } else if (packet.name === 'unknown') { + self.emit(packet.name, packet); + } + self.emit('parsed', packet.addresses || packet.block || packet.tx); }); }); }, 50); @@ -282,29 +327,29 @@ Bitcoin.prototype.start = function(options, callback) { this._emitted = {}; - this.on('newListener', function(name) { - if (name === 'version' || name === 'peer') { - self._pollPeers(); - return; - } - if (name === 'addr') { - self._pollAddresses(); - return; - } - if (name === 'block') { - self._pollBlocks(); - return; - } - if (name === 'tx') { - self._pollBlocks(); - self._pollMempool(); - return; - } - if (name === 'mptx') { - self._pollMempool(); - return; - } - }); + // this.on('newListener', function(name) { + // if (name === 'version' || name === 'peer') { + // self._pollPeers(); + // return; + // } + // if (name === 'addr') { + // self._pollAddresses(); + // return; + // } + // if (name === 'block') { + // self._pollBlocks(); + // return; + // } + // if (name === 'tx') { + // self._pollBlocks(); + // self._pollMempool(); + // return; + // } + // if (name === 'mptx') { + // self._pollMempool(); + // return; + // } + // }); if (this.log_pipe !== -1) { this.log('log pipe opened: %d', this.log_pipe);