InputStream still unstable, use seq[byte] again
This commit is contained in:
parent
692bed176e
commit
a540b8cbeb
|
@ -33,8 +33,12 @@ proc testGetBranch(tester: Tester, rootHash: KeccakHash, testStatusIMPL: var Tes
|
||||||
var witness = wb.getBranchRecurse(address)
|
var witness = wb.getBranchRecurse(address)
|
||||||
|
|
||||||
var db = newMemoryDB()
|
var db = newMemoryDB()
|
||||||
|
when defined(useInputStream):
|
||||||
var input = memoryInput(witness)
|
var input = memoryInput(witness)
|
||||||
var tb = initTreeBuilder(input, db)
|
var tb = initTreeBuilder(input, db)
|
||||||
|
else:
|
||||||
|
var tb = initTreeBuilder(witness, db)
|
||||||
|
|
||||||
var root = tb.treeNode()
|
var root = tb.treeNode()
|
||||||
check root.data == rootHash.data
|
check root.data == rootHash.data
|
||||||
|
|
||||||
|
|
|
@ -11,10 +11,19 @@ type
|
||||||
data*: array[32, byte]
|
data*: array[32, byte]
|
||||||
|
|
||||||
TreeBuilder = object
|
TreeBuilder = object
|
||||||
|
when defined(useInputStream):
|
||||||
input: InputStream
|
input: InputStream
|
||||||
|
else:
|
||||||
|
input: seq[byte]
|
||||||
|
pos: int
|
||||||
db: DB
|
db: DB
|
||||||
root: KeccakHash
|
root: KeccakHash
|
||||||
|
|
||||||
|
# the InputStream still unstable
|
||||||
|
# when using large dataset for testing
|
||||||
|
# or run longer
|
||||||
|
|
||||||
|
when defined(useInputStream):
|
||||||
proc initTreeBuilder*(input: InputStream, db: DB): TreeBuilder =
|
proc initTreeBuilder*(input: InputStream, db: DB): TreeBuilder =
|
||||||
result.input = input
|
result.input = input
|
||||||
result.db = db
|
result.db = db
|
||||||
|
@ -24,6 +33,11 @@ proc initTreeBuilder*(input: openArray[byte], db: DB): TreeBuilder =
|
||||||
result.input = memoryInput(input)
|
result.input = memoryInput(input)
|
||||||
result.db = db
|
result.db = db
|
||||||
result.root = emptyRlpHash
|
result.root = emptyRlpHash
|
||||||
|
else:
|
||||||
|
proc initTreeBuilder*(input: openArray[byte], db: DB): TreeBuilder =
|
||||||
|
result.input = @input
|
||||||
|
result.db = db
|
||||||
|
result.root = emptyRlpHash
|
||||||
|
|
||||||
func rootHash*(t: TreeBuilder): KeccakHash {.inline.} =
|
func rootHash*(t: TreeBuilder): KeccakHash {.inline.} =
|
||||||
t.root
|
t.root
|
||||||
|
@ -32,18 +46,34 @@ proc writeNode(t: var TreeBuilder, n: openArray[byte]): KeccakHash =
|
||||||
result = keccak(n)
|
result = keccak(n)
|
||||||
t.db.put(result.data, n)
|
t.db.put(result.data, n)
|
||||||
|
|
||||||
|
when defined(useInputStream):
|
||||||
template readByte(t: var TreeBuilder): byte =
|
template readByte(t: var TreeBuilder): byte =
|
||||||
t.input.read
|
t.input.read
|
||||||
|
|
||||||
template len(t: TreeBuilder): int =
|
template len(t: TreeBuilder): int =
|
||||||
t.input.len
|
t.input.len
|
||||||
|
|
||||||
template peek(t: TreeBuilder): byte =
|
|
||||||
t.input.peek
|
|
||||||
|
|
||||||
template read(t: var TreeBuilder, len: int): auto =
|
template read(t: var TreeBuilder, len: int): auto =
|
||||||
t.input.read(len)
|
t.input.read(len)
|
||||||
|
|
||||||
|
else:
|
||||||
|
template readByte(t: var TreeBuilder): byte =
|
||||||
|
let pos = t.pos
|
||||||
|
inc t.pos
|
||||||
|
t.input[pos]
|
||||||
|
|
||||||
|
template len(t: TreeBuilder): int =
|
||||||
|
t.input.len
|
||||||
|
|
||||||
|
template peek(t: TreeBuilder): byte =
|
||||||
|
t.input.peek
|
||||||
|
t.input[t.pos]
|
||||||
|
|
||||||
|
template read(t: var TreeBuilder, len: int): auto =
|
||||||
|
let pos = t.pos
|
||||||
|
inc(t.pos, len)
|
||||||
|
toOpenArray(t.input, pos, pos+len-1)
|
||||||
|
|
||||||
proc readU32(t: var TreeBuilder): uint32 =
|
proc readU32(t: var TreeBuilder): uint32 =
|
||||||
result = fromBytesBE(uint32, t.read(4))
|
result = fromBytesBE(uint32, t.read(4))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue