add "peer" and "version" event.

This commit is contained in:
Christopher Jeffrey 2014-10-17 14:23:19 -07:00
parent 6f6a596990
commit 6fadefe761
3 changed files with 36 additions and 0 deletions

View File

@ -48,6 +48,10 @@ bitcoind.on('open', function(status) {
print(bitcoind.getInfo());
print(bitcoind.getPeerInfo());
print(bitcoind.wallet.listAccounts());
bitcoind.on('version', function(version) {
print('Version packet:');
print(version);
});
}, 7000);
}

View File

@ -252,6 +252,10 @@ Bitcoin.prototype.start = function(options, callback) {
this._emitted = {};
this.on('newListener', function(name) {
if (name === 'version' || name === 'peer') {
self._pollPeers();
return;
}
if (name === 'block') {
self._pollBlocks();
return;
@ -364,6 +368,33 @@ Bitcoin.prototype._pollMempool = function() {
})();
};
// XXX Not perfect - will not catch all version packets.
Bitcoin.prototype._pollPeers = function() {
var self = this;
if (this._pollingPeers) return;
this._pollingPeers = true;
var peers = bitcoindjs.getPeerInfo();
(function next() {
var newPeers = bitcoindjs.getPeerInfo();
newPeers = newPeers.filter(function(peer, i) {
return !peers[i] || peer.addr !== peers[i].addr;
});
newPeers.forEach(function(peer) {
self.emit('peer', peer);
self.emit('version', {
version: peer.version,
services: peer.services,
time: peer.conntime,
nonce: null,
useragent: peer.subver,
startheight: peer.startingheight,
relay: null // peer.fRelayTxes
});
});
return setTimeout(next, self.pollInterval);
})();
};
Bitcoin.prototype.getBlock = function(blockHash, callback) {
return bitcoindjs.getBlock(blockHash, function(err, block) {
if (err) return callback(err);

View File

@ -1584,6 +1584,7 @@ NAN_METHOD(GetPeerInfo) {
}
obj->Set(NanNew<String>("syncnode"), NanNew<Boolean>(stats.fSyncNode));
obj->Set(NanNew<String>("whitelisted"), NanNew<Boolean>(stats.fWhitelisted));
// obj->Set(NanNew<String>("relaytxes"), NanNew<Boolean>(stats.fRelayTxes));
array->Set(i, obj);
i++;