Fixed BlockExtractor

This commit is contained in:
Gustavo Cortez 2014-05-27 10:59:34 -03:00
parent 04db5279a8
commit 556361e970
1 changed files with 27 additions and 21 deletions

View File

@ -97,29 +97,40 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
async.whilst( async.whilst(
function() { function() {
return (!magic); return (!magic || magic === '00000000');
}, },
function(w_cb) { function(w_cb) {
magic = null;
self.readCurrentFileSync(); self.readCurrentFileSync();
if (self.currentFileIndex < 0) return cb(); if (self.currentFileIndex < 0) return cb();
var byte0 = self.currentParser ? self.currentParser.buffer(1).toString('hex') : null;
magic = self.currentParser ? self.currentParser.buffer(4).toString('hex') if (byte0) {
: null ; // Grab 3 bytes from block without removing them
var p = self.currentParser.pos;
var bytes123 = self.currentParser.subject.toString('hex',p,p+3);
magic = byte0 + bytes123;
if (!self.currentParser || self.currentParser.eof() || magic === '00000000') { if (magic !=='00000000' && magic !== self.magic) {
magic = null;
if (self.nextFile()) { if (self.errorCount++ > 4)
return cb(new Error('CRITICAL ERROR: Magic number mismatch: ' +
magic + '!=' + self.magic));
magic=null;
}
}
if (!self.currentParser || self.currentParser.eof() ) {
if (self.nextFile())
console.log('Moving forward to file:' + self.currentFile() ); console.log('Moving forward to file:' + self.currentFile() );
return w_cb(); else
}
else {
console.log('Finished all files'); console.log('Finished all files');
magic = null;
return w_cb(); magic = null;
} return w_cb();
} }
else { else {
return w_cb(); return w_cb();
@ -128,14 +139,8 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
}, },
function (a_cb) { function (a_cb) {
if (!magic) return a_cb(); if (!magic) return a_cb();
if (magic !== self.magic) { // Remove 3 bytes from magic and spacer
var e = new Error('CRITICAL ERROR: Magic number mismatch: ' + self.currentParser.buffer(3+4);
magic + '!=' + self.magic);
return a_cb(e);
}
// spacer?
self.currentParser.word32le();
return a_cb(); return a_cb();
}, },
function (a_cb) { function (a_cb) {
@ -144,6 +149,7 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
b = new Block(); b = new Block();
b.parse(self.currentParser); b.parse(self.currentParser);
b.getHash(); b.getHash();
self.errorCount=0;
return a_cb(); return a_cb();
}, },
], function(err) { ], function(err) {