trie/triedb: add Reader to backend interface (#29988)
This commit is contained in:
parent
86150af2e5
commit
fd5078c779
@ -74,6 +74,10 @@ type backend interface {
|
|||||||
|
|
||||||
// Close closes the trie database backend and releases all held resources.
|
// Close closes the trie database backend and releases all held resources.
|
||||||
Close() error
|
Close() error
|
||||||
|
|
||||||
|
// Reader returns a reader for accessing all trie nodes with provided state
|
||||||
|
// root. An error will be returned if the requested state is not available.
|
||||||
|
Reader(root common.Hash) (database.Reader, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Database is the wrapper of the underlying backend which is shared by different
|
// Database is the wrapper of the underlying backend which is shared by different
|
||||||
@ -123,13 +127,7 @@ func NewDatabase(diskdb ethdb.Database, config *Config) *Database {
|
|||||||
// Reader returns a reader for accessing all trie nodes with provided state root.
|
// Reader returns a reader for accessing all trie nodes with provided state root.
|
||||||
// An error will be returned if the requested state is not available.
|
// An error will be returned if the requested state is not available.
|
||||||
func (db *Database) Reader(blockRoot common.Hash) (database.Reader, error) {
|
func (db *Database) Reader(blockRoot common.Hash) (database.Reader, error) {
|
||||||
switch b := db.backend.(type) {
|
return db.backend.Reader(blockRoot)
|
||||||
case *hashdb.Database:
|
|
||||||
return b.Reader(blockRoot)
|
|
||||||
case *pathdb.Database:
|
|
||||||
return b.Reader(blockRoot)
|
|
||||||
}
|
|
||||||
return nil, errors.New("unknown backend")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update performs a state transition by committing dirty nodes contained in the
|
// Update performs a state transition by committing dirty nodes contained in the
|
||||||
|
@ -33,6 +33,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/rlp"
|
"github.com/ethereum/go-ethereum/rlp"
|
||||||
"github.com/ethereum/go-ethereum/trie/trienode"
|
"github.com/ethereum/go-ethereum/trie/trienode"
|
||||||
"github.com/ethereum/go-ethereum/trie/triestate"
|
"github.com/ethereum/go-ethereum/trie/triestate"
|
||||||
|
"github.com/ethereum/go-ethereum/triedb/database"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -625,7 +626,7 @@ func (db *Database) Close() error {
|
|||||||
|
|
||||||
// Reader retrieves a node reader belonging to the given state root.
|
// Reader retrieves a node reader belonging to the given state root.
|
||||||
// An error will be returned if the requested state is not available.
|
// An error will be returned if the requested state is not available.
|
||||||
func (db *Database) Reader(root common.Hash) (*reader, error) {
|
func (db *Database) Reader(root common.Hash) (database.Reader, error) {
|
||||||
if _, err := db.node(root); err != nil {
|
if _, err := db.node(root); err != nil {
|
||||||
return nil, fmt.Errorf("state %#x is not available, %v", root, err)
|
return nil, fmt.Errorf("state %#x is not available, %v", root, err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user