wip
This commit is contained in:
parent
28cd106842
commit
735810919a
@ -182,7 +182,7 @@ DB.prototype.start = function(callback) {
|
|||||||
|
|
||||||
this.node.once('ready', function() {
|
this.node.once('ready', function() {
|
||||||
// start syncing
|
// start syncing
|
||||||
self._sync.initialSync();
|
self._sync.sync();
|
||||||
|
|
||||||
// Notify that there is a new tip
|
// Notify that there is a new tip
|
||||||
self.node.services.bitcoind.on('tip', function() {
|
self.node.services.bitcoind.on('tip', function() {
|
||||||
|
|||||||
@ -40,7 +40,7 @@ Sync.prototype.initialSync = function() {
|
|||||||
|
|
||||||
processSerial.on('finish', function() {
|
processSerial.on('finish', function() {
|
||||||
self.syncing = false;
|
self.syncing = false;
|
||||||
self.emit('initialsync');
|
self.emit('synced');
|
||||||
});
|
});
|
||||||
|
|
||||||
this.blockStream
|
this.blockStream
|
||||||
@ -62,20 +62,13 @@ Sync.prototype.sync = function() {
|
|||||||
this.syncing = true;
|
this.syncing = true;
|
||||||
this.blockStream = new BlockStream();
|
this.blockStream = new BlockStream();
|
||||||
var processBoth = new ProcessBoth(this.db);
|
var processBoth = new ProcessBoth(this.db);
|
||||||
var writeStream = new WriteStream(this.db);
|
|
||||||
|
|
||||||
var start = Date.now();
|
|
||||||
|
|
||||||
this._handleErrors(this.blockStream);
|
this._handleErrors(this.blockStream);
|
||||||
this._handleErrors(processBoth);
|
this._handleErrors(processBoth);
|
||||||
this._handleErrors(writeStream);
|
|
||||||
|
|
||||||
writeStream.on('finish', function() {
|
//TODO what should happen here
|
||||||
var end = Date.now();
|
processBoth.on('finish', function() {
|
||||||
console.log('Total time: ', (end - start) + ' ms');
|
self.syncing = false;
|
||||||
console.log('Concurrent write time: ', writeStreamSlow.writeTime + ' ms');
|
|
||||||
console.log('Serial write time: ', writeStreamFast.writeTime + ' ms');
|
|
||||||
self.emit('synced');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.blockStream
|
this.blockStream
|
||||||
@ -383,4 +376,47 @@ WriteStream.prototype._write = function(obj, enc, callback) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var ProcessBoth = function(highWaterMark, db) {
|
||||||
|
Writable.call(this, {objectMode: true, highWaterMark: highWaterMark});
|
||||||
|
this.db = db;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
inherits(ProcessBoth, Writable);
|
||||||
|
|
||||||
|
ProcessBoth.prototype._write = function(block, encoding, callback) {
|
||||||
|
|
||||||
|
async.parallel([function(next) {
|
||||||
|
self.db.getConcurrentBlockOperations(block, true, function(err, operations) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
operations.push(self.db.getConcurrentTipOperation(block, true));
|
||||||
|
next(null, operations);
|
||||||
|
});
|
||||||
|
}, function(next) {
|
||||||
|
self.db.getSerialBlockOperations(block, true, function(err, operations) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
operations.push(self.db.getTipOperation(block, true));
|
||||||
|
next(null, operations);
|
||||||
|
});
|
||||||
|
}], function(err, results) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
var operations = results[0].concat(results[1]);
|
||||||
|
self.db.store.batch(operations, function(err) {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
self.db.tip = block;
|
||||||
|
self.db.concurrentTip = block;
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = Sync;
|
module.exports = Sync;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user