db: cleveldb iterator
This commit is contained in:
parent
3e5dbef6a2
commit
bcacaf164b
|
@ -17,6 +17,8 @@ func init() {
|
||||||
registerDBCreator(CLevelDBBackendStr, dbCreator, false)
|
registerDBCreator(CLevelDBBackendStr, dbCreator, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ DB = (*CLevelDB)(nil)
|
||||||
|
|
||||||
type CLevelDB struct {
|
type CLevelDB struct {
|
||||||
db *levigo.DB
|
db *levigo.DB
|
||||||
ro *levigo.ReadOptions
|
ro *levigo.ReadOptions
|
||||||
|
@ -158,13 +160,17 @@ func (mBatch *cLevelDBBatch) Write() {
|
||||||
// Iterator
|
// Iterator
|
||||||
|
|
||||||
func (db *CLevelDB) Iterator(start, end []byte) Iterator {
|
func (db *CLevelDB) Iterator(start, end []byte) Iterator {
|
||||||
/*
|
|
||||||
XXX
|
|
||||||
itr := db.db.NewIterator(db.ro)
|
itr := db.db.NewIterator(db.ro)
|
||||||
itr.Seek([]byte{0x00})
|
if len(start) > 0 {
|
||||||
return cLevelDBIterator{itr}
|
itr.Seek(start)
|
||||||
*/
|
} else {
|
||||||
return nil
|
itr.SeekToFirst()
|
||||||
|
}
|
||||||
|
return cLevelDBIterator{
|
||||||
|
itr: itr,
|
||||||
|
start: start,
|
||||||
|
end: end,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *CLevelDB) ReverseIterator(start, end []byte) Iterator {
|
func (db *CLevelDB) ReverseIterator(start, end []byte) Iterator {
|
||||||
|
@ -172,15 +178,15 @@ func (db *CLevelDB) ReverseIterator(start, end []byte) Iterator {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ Iterator = (*cLevelDBIterator)(nil)
|
||||||
|
|
||||||
type cLevelDBIterator struct {
|
type cLevelDBIterator struct {
|
||||||
itr *levigo.Iterator
|
itr *levigo.Iterator
|
||||||
|
start, end []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c cLevelDBIterator) Seek(key []byte) {
|
func (c cLevelDBIterator) Domain() ([]byte, []byte) {
|
||||||
if key == nil {
|
return c.start, c.end
|
||||||
key = []byte{0x00}
|
|
||||||
}
|
|
||||||
c.itr.Seek(key)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c cLevelDBIterator) Valid() bool {
|
func (c cLevelDBIterator) Valid() bool {
|
||||||
|
|
|
@ -5,18 +5,19 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
cmn "github.com/tendermint/tmlibs/common"
|
cmn "github.com/tendermint/tmlibs/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
func checkValid(t *testing.T, itr Iterator, expected bool) {
|
func checkValid(t *testing.T, itr Iterator, expected bool) {
|
||||||
valid := itr.Valid()
|
valid := itr.Valid()
|
||||||
assert.Equal(t, expected, valid)
|
require.Equal(t, expected, valid)
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkNext(t *testing.T, itr Iterator, expected bool) {
|
func checkNext(t *testing.T, itr Iterator, expected bool) {
|
||||||
itr.Next()
|
itr.Next()
|
||||||
valid := itr.Valid()
|
valid := itr.Valid()
|
||||||
assert.Equal(t, expected, valid)
|
require.Equal(t, expected, valid)
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkNextPanics(t *testing.T, itr Iterator) {
|
func checkNextPanics(t *testing.T, itr Iterator) {
|
||||||
|
|
Loading…
Reference in New Issue