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.load = peer;
|
||||||
this.peers.all.push(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() {
|
peer.once('close', function() {
|
||||||
self._stopInterval();
|
self._stopInterval();
|
||||||
self._stopTimer();
|
self._stopTimer();
|
||||||
@ -315,12 +306,6 @@ Pool.prototype._addLoader = function _addLoader() {
|
|||||||
self._stopTimer();
|
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) {
|
peer.on('merkleblock', function(block) {
|
||||||
// If the peer sent us a block that was added
|
// If the peer sent us a block that was added
|
||||||
// to the chain (not orphans), reset the timeout.
|
// to the chain (not orphans), reset the timeout.
|
||||||
@ -616,12 +601,73 @@ Pool.prototype.loadMempool = function loadMempool() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Pool.prototype._createPeer = function _createPeer(backoff) {
|
Pool.prototype._createPeer = function _createPeer(backoff) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
var peer = new bcoin.peer(this, this.createConnection, {
|
var peer = new bcoin.peer(this, this.createConnection, {
|
||||||
backoff: backoff,
|
backoff: backoff,
|
||||||
startHeight: this.options.startHeight,
|
startHeight: this.options.startHeight,
|
||||||
relay: this.options.relay
|
relay: this.options.relay
|
||||||
});
|
});
|
||||||
|
|
||||||
peer._retry = 0;
|
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;
|
return peer;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -645,16 +691,6 @@ Pool.prototype._addPeer = function _addPeer(backoff) {
|
|||||||
this.peers.pending.push(peer);
|
this.peers.pending.push(peer);
|
||||||
this.peers.all.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() {
|
peer.once('close', function() {
|
||||||
self._removePeer(peer);
|
self._removePeer(peer);
|
||||||
if (self.destroyed)
|
if (self.destroyed)
|
||||||
@ -699,58 +735,10 @@ Pool.prototype._addPeer = function _addPeer(backoff) {
|
|||||||
self._handleBlock(block, peer);
|
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) {
|
peer.on('blocks', function(hashes) {
|
||||||
self._handleInv(hashes, peer);
|
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() {
|
utils.nextTick(function() {
|
||||||
self.emit('peer', peer);
|
self.emit('peer', peer);
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user