pool: move common listeners to createPeer.
This commit is contained in:
parent
24f8bc69c5
commit
d316b1c640
@ -291,15 +291,6 @@ Pool.prototype._addLoader = function _addLoader() {
|
||||
this.peers.load = peer;
|
||||
this.peers.all.push(peer);
|
||||
|
||||
peer.on('error', function(err) {
|
||||
self.emit('error', err, peer);
|
||||
});
|
||||
|
||||
peer.on('debug', function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
self.emit.apply(self, ['debug'].concat(args));
|
||||
});
|
||||
|
||||
peer.once('close', function() {
|
||||
self._stopInterval();
|
||||
self._stopTimer();
|
||||
@ -315,12 +306,6 @@ Pool.prototype._addLoader = function _addLoader() {
|
||||
self._stopTimer();
|
||||
});
|
||||
|
||||
peer.on('version', function(version) {
|
||||
if (version.height > self.block.bestHeight)
|
||||
self.block.bestHeight = version.height;
|
||||
self.emit('version', version, peer);
|
||||
});
|
||||
|
||||
peer.on('merkleblock', function(block) {
|
||||
// If the peer sent us a block that was added
|
||||
// to the chain (not orphans), reset the timeout.
|
||||
@ -616,12 +601,73 @@ Pool.prototype.loadMempool = function loadMempool() {
|
||||
};
|
||||
|
||||
Pool.prototype._createPeer = function _createPeer(backoff) {
|
||||
var self = this;
|
||||
|
||||
var peer = new bcoin.peer(this, this.createConnection, {
|
||||
backoff: backoff,
|
||||
startHeight: this.options.startHeight,
|
||||
relay: this.options.relay
|
||||
});
|
||||
|
||||
peer._retry = 0;
|
||||
|
||||
peer.on('error', function(err) {
|
||||
self.emit('error', err, peer);
|
||||
});
|
||||
|
||||
peer.on('debug', function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
self.emit.apply(self, ['debug'].concat(args));
|
||||
});
|
||||
|
||||
peer.on('reject', function(payload) {
|
||||
self.emit('debug',
|
||||
'Reject: msg=%s ccode=%s reason=%s data=%s',
|
||||
payload.message, payload.ccode, payload.reason,
|
||||
utils.toHex(payload.data));
|
||||
self.emit('reject', payload, peer);
|
||||
});
|
||||
|
||||
peer.on('notfound', function(items) {
|
||||
items.forEach(function(item) {
|
||||
var req = self.request.map[utils.toHex(item.hash)];
|
||||
if (req && req.peer === peer)
|
||||
req.finish(null);
|
||||
});
|
||||
});
|
||||
|
||||
peer.on('tx', function(tx) {
|
||||
self._response(tx);
|
||||
self.emit('tx', tx, peer);
|
||||
|
||||
if (!self.options.fullNode && tx.block)
|
||||
self.emit('watched', tx, peer);
|
||||
});
|
||||
|
||||
peer.on('addr', function(addr) {
|
||||
var host = addr.ipv4 + ':' + addr.port;
|
||||
|
||||
if (self.seeds.length > self.size * 2)
|
||||
self.seeds = network.seeds.slice();
|
||||
|
||||
if (self.seeds.indexOf(host) !== -1) {
|
||||
self.emit('debug', 'Found new peer: %s', host);
|
||||
self.seeds.push(host);
|
||||
}
|
||||
|
||||
self.emit('addr', addr, peer);
|
||||
});
|
||||
|
||||
peer.on('txs', function(txs) {
|
||||
self.emit('txs', txs, peer);
|
||||
});
|
||||
|
||||
peer.on('version', function(version) {
|
||||
if (version.height > self.block.bestHeight)
|
||||
self.block.bestHeight = version.height;
|
||||
self.emit('version', version, peer);
|
||||
});
|
||||
|
||||
return peer;
|
||||
};
|
||||
|
||||
@ -645,16 +691,6 @@ Pool.prototype._addPeer = function _addPeer(backoff) {
|
||||
this.peers.pending.push(peer);
|
||||
this.peers.all.push(peer);
|
||||
|
||||
// Create new peer on failure
|
||||
peer.on('error', function(err) {
|
||||
self.emit('error', err, peer);
|
||||
});
|
||||
|
||||
peer.on('debug', function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
self.emit.apply(self, ['debug'].concat(args));
|
||||
});
|
||||
|
||||
peer.once('close', function() {
|
||||
self._removePeer(peer);
|
||||
if (self.destroyed)
|
||||
@ -699,58 +735,10 @@ Pool.prototype._addPeer = function _addPeer(backoff) {
|
||||
self._handleBlock(block, peer);
|
||||
});
|
||||
|
||||
peer.on('reject', function(payload) {
|
||||
self.emit('debug',
|
||||
'Reject: msg=%s ccode=%s reason=%s data=%s',
|
||||
payload.message, payload.ccode, payload.reason,
|
||||
utils.toHex(payload.data));
|
||||
self.emit('reject', payload, peer);
|
||||
});
|
||||
|
||||
peer.on('notfound', function(items) {
|
||||
items.forEach(function(item) {
|
||||
var req = self.request.map[utils.toHex(item.hash)];
|
||||
if (req && req.peer === peer)
|
||||
req.finish(null);
|
||||
});
|
||||
});
|
||||
|
||||
peer.on('tx', function(tx) {
|
||||
self._response(tx);
|
||||
self.emit('tx', tx, peer);
|
||||
|
||||
if (!self.options.fullNode && tx.block)
|
||||
self.emit('watched', tx, peer);
|
||||
});
|
||||
|
||||
peer.on('addr', function(addr) {
|
||||
var host = addr.ipv4 + ':' + addr.port;
|
||||
|
||||
if (self.seeds.length > self.size * 2)
|
||||
self.seeds = network.seeds.slice();
|
||||
|
||||
if (!~self.seeds.indexOf(host)) {
|
||||
self.emit('debug', 'Found new peer: %s', host);
|
||||
self.seeds.push(host);
|
||||
}
|
||||
|
||||
self.emit('addr', addr, peer);
|
||||
});
|
||||
|
||||
peer.on('blocks', function(hashes) {
|
||||
self._handleInv(hashes, peer);
|
||||
});
|
||||
|
||||
peer.on('txs', function(txs) {
|
||||
self.emit('txs', txs, peer);
|
||||
});
|
||||
|
||||
peer.on('version', function(version) {
|
||||
if (version.height > self.block.bestHeight)
|
||||
self.block.bestHeight = version.height;
|
||||
self.emit('version', version, peer);
|
||||
});
|
||||
|
||||
utils.nextTick(function() {
|
||||
self.emit('peer', peer);
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user