mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-02-06 09:13:46 +00:00
* Removed dedicated transcoder tests why: will implicitely be provided by other tests: + encode/write -> hashify -> test_tx + decode/read -> merge raw nodes -> test_tx + de/blobfiy -> backend operations, taext_tx, test_backend, test_filter * Clarify how the vertex ID generator state is accessed from the backend why: This state is a list of unused vertex IDs. It was just stored somewhere on the backend which details were exposed when iterating over some sub-table(s). As there will be more such single information records, an admin sub-tables has been defined (formerly ID generator table) with dedicated access keys and type. Also, the iterator over the single ID generator state item has been removed. It must be accessed via the `get()` interface. * Remove trailing space from file name why: fixes windows bail out
53 lines
1.9 KiB
Nim
53 lines
1.9 KiB
Nim
# Nimbus - Types, data structures and shared utilities used in network sync
|
|
#
|
|
# Copyright (c) 2018-2021 Status Research & Development GmbH
|
|
# Licensed under either of
|
|
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
# http://www.apache.org/licenses/LICENSE-2.0)
|
|
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
# http://opensource.org/licenses/MIT)
|
|
# at your option. This file may not be copied, modified, or
|
|
# distributed except according to those terms.
|
|
|
|
## Iterators for persistent backend of the Aristo DB
|
|
## =================================================
|
|
##
|
|
## This module automatically pulls in the persistent backend library at the
|
|
## linking stage (e.g. `rocksdb`) which can be avoided for pure memory DB
|
|
## applications by importing `./aristo_walk/memory_only` (rather than
|
|
## `./aristo_walk/persistent`.)
|
|
##
|
|
import
|
|
../aristo_init/[aristo_rocksdb, persistent],
|
|
".."/[aristo_desc, aristo_init],
|
|
"."/[aristo_walk_private, memory_only]
|
|
export
|
|
aristo_rocksdb,
|
|
memory_only,
|
|
persistent
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Public iterators (all in one)
|
|
# ------------------------------------------------------------------------------
|
|
|
|
iterator walkVtxBe*(
|
|
T: type RdbBackendRef;
|
|
db: AristoDbRef;
|
|
): tuple[n: int, vid: VertexID, vtx: VertexRef] =
|
|
## Iterate over filtered RocksDB backend vertices. This function depends on
|
|
## the particular backend type name which must match the backend descriptor.
|
|
for (n,vid,vtx) in db.to(T).walkVtxBeImpl db:
|
|
yield (n,vid,vtx)
|
|
|
|
iterator walkKeyBe*(
|
|
T: type RdbBackendRef;
|
|
db: AristoDbRef;
|
|
): tuple[n: int, vid: VertexID, key: HashKey] =
|
|
## Similar to `walkVtxBe()` but for keys.
|
|
for (n,vid,key) in db.to(T).walkKeyBeImpl db:
|
|
yield (n,vid,key)
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# End
|
|
# ------------------------------------------------------------------------------
|