mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-10-14 00:59:33 +00:00
[NOD-914] Make LevelDB.Cursor receive bucket instead of prefix (#696)
This commit is contained in:
parent
7609c50641
commit
fe91b4c878
@ -156,7 +156,7 @@ func (db *ffldb) RetrieveFromStore(storeName string, location []byte) ([]byte, e
|
|||||||
// Cursor begins a new cursor over the given bucket.
|
// Cursor begins a new cursor over the given bucket.
|
||||||
// This method is part of the DataAccessor interface.
|
// This method is part of the DataAccessor interface.
|
||||||
func (db *ffldb) Cursor(bucket *database.Bucket) (database.Cursor, error) {
|
func (db *ffldb) Cursor(bucket *database.Bucket) (database.Cursor, error) {
|
||||||
ldbCursor := db.levelDB.Cursor(bucket.Path())
|
ldbCursor := db.levelDB.Cursor(bucket)
|
||||||
|
|
||||||
return ldbCursor, nil
|
return ldbCursor, nil
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,7 @@ func (db *ffldb) initialize() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (db *ffldb) flatFiles() (map[string][]byte, error) {
|
func (db *ffldb) flatFiles() (map[string][]byte, error) {
|
||||||
flatFilesBucketPath := flatFilesBucket.Path()
|
flatFilesCursor := db.levelDB.Cursor(flatFilesBucket)
|
||||||
flatFilesCursor := db.levelDB.Cursor(flatFilesBucketPath)
|
|
||||||
defer func() {
|
defer func() {
|
||||||
err := flatFilesCursor.Close()
|
err := flatFilesCursor.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -11,17 +11,17 @@ import (
|
|||||||
// LevelDBCursor is a thin wrapper around native leveldb iterators.
|
// LevelDBCursor is a thin wrapper around native leveldb iterators.
|
||||||
type LevelDBCursor struct {
|
type LevelDBCursor struct {
|
||||||
ldbIterator iterator.Iterator
|
ldbIterator iterator.Iterator
|
||||||
prefix []byte
|
bucket *database.Bucket
|
||||||
|
|
||||||
isClosed bool
|
isClosed bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cursor begins a new cursor over the given prefix.
|
// Cursor begins a new cursor over the given prefix.
|
||||||
func (db *LevelDB) Cursor(prefix []byte) *LevelDBCursor {
|
func (db *LevelDB) Cursor(bucket *database.Bucket) *LevelDBCursor {
|
||||||
ldbIterator := db.ldb.NewIterator(util.BytesPrefix(prefix), nil)
|
ldbIterator := db.ldb.NewIterator(util.BytesPrefix(bucket.Path()), nil)
|
||||||
return &LevelDBCursor{
|
return &LevelDBCursor{
|
||||||
ldbIterator: ldbIterator,
|
ldbIterator: ldbIterator,
|
||||||
prefix: prefix,
|
bucket: bucket,
|
||||||
isClosed: false,
|
isClosed: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,8 +84,8 @@ func (c *LevelDBCursor) Key() (*database.Key, error) {
|
|||||||
return nil, errors.Wrapf(database.ErrNotFound, "cannot get the "+
|
return nil, errors.Wrapf(database.ErrNotFound, "cannot get the "+
|
||||||
"key of a done cursor")
|
"key of a done cursor")
|
||||||
}
|
}
|
||||||
suffix := bytes.TrimPrefix(fullKeyPath, c.prefix)
|
suffix := bytes.TrimPrefix(fullKeyPath, c.bucket.Path())
|
||||||
return database.MakeBucket(c.prefix).Key(suffix), nil
|
return c.bucket.Key(suffix), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Value returns the value of the current key/value pair, or ErrNotFound if done.
|
// Value returns the value of the current key/value pair, or ErrNotFound if done.
|
||||||
|
@ -135,5 +135,5 @@ func (tx *LevelDBTransaction) Cursor(bucket *database.Bucket) (*LevelDBCursor, e
|
|||||||
return nil, errors.New("cannot open a cursor from a closed transaction")
|
return nil, errors.New("cannot open a cursor from a closed transaction")
|
||||||
}
|
}
|
||||||
|
|
||||||
return tx.db.Cursor(bucket.Path()), nil
|
return tx.db.Cursor(bucket), nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user