Skip to content
This repository was archived by the owner on Apr 6, 2020. It is now read-only.

Commit 674cee7

Browse files
committed
Mv _getBlock to DBManager
1 parent c10934d commit 674cee7

File tree

2 files changed

+30
-44
lines changed

2 files changed

+30
-44
lines changed

src/dbManager.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,33 @@ module.exports = class DBManager {
129129
this._cache.header.set(key, encodedHeader)
130130
return new Block.Header(rlp.decode(encodedHeader), {common: this._common})
131131
}
132+
133+
async _getBlock (blockTag) {
134+
// determine BlockTag type
135+
if (Number.isInteger(blockTag)) {
136+
blockTag = new BN(blockTag)
137+
}
138+
139+
let number
140+
let hash
141+
if (Buffer.isBuffer(blockTag)) {
142+
hash = blockTag
143+
number = await this._hashToNumber(blockTag)
144+
} else if (BN.isBN(blockTag)) {
145+
number = blockTag
146+
hash = await this._numberToHash(blockTag)
147+
} else {
148+
throw new Error('Unknown blockTag type')
149+
}
150+
151+
const header = (await this._getHeader(hash, number)).raw
152+
let body
153+
try {
154+
body = await this._getBody(hash, number)
155+
} catch (e) {
156+
body = [[], []]
157+
}
158+
159+
return new Block([header].concat(body), {common: this._common})
160+
}
132161
}

src/index.js

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -474,50 +474,7 @@ module.exports = class Blockchain {
474474
}
475475

476476
_getBlock (blockTag, cb) {
477-
const self = this
478-
479-
// determine BlockTag type
480-
if (Number.isInteger(blockTag)) {
481-
blockTag = new BN(blockTag)
482-
}
483-
async.waterfall([
484-
(cb) => {
485-
if (Buffer.isBuffer(blockTag)) {
486-
self._hashToNumber(blockTag, (err, number) => {
487-
if (err) return cb(err)
488-
cb(null, blockTag, number)
489-
})
490-
} else if (BN.isBN(blockTag)) {
491-
self._numberToHash(blockTag, (err, hash) => {
492-
if (err) return cb(err)
493-
cb(null, hash, blockTag)
494-
})
495-
} else {
496-
cb(new Error('Unknown blockTag type'))
497-
}
498-
},
499-
lookupByHashAndNumber
500-
], cb)
501-
502-
function lookupByHashAndNumber (hash, number, cb) {
503-
async.parallel({
504-
header: (cb) => {
505-
self._getHeader(hash, number, (err, header) => {
506-
if (err) return cb(err)
507-
cb(null, header.raw)
508-
})
509-
},
510-
body: (cb) => {
511-
self._getBody(hash, number, (err, body) => {
512-
if (err) return cb(null, [[], []])
513-
cb(null, body)
514-
})
515-
}
516-
}, (err, parts) => {
517-
if (err) return cb(err)
518-
cb(null, new Block([parts.header].concat(parts.body), {common: self._common}))
519-
})
520-
}
477+
util.callbackify(this.dbManager._getBlock.bind(this.dbManager))(blockTag, cb)
521478
}
522479

523480
/**

0 commit comments

Comments
 (0)