Add Release & Error methods to Iterator
We need this to properly support LevelDB backend, which needs to be released if we don't want to leak memory.
This commit is contained in:
parent
9997e3a3b4
commit
296d223545
5
db/db.go
5
db/db.go
|
@ -10,10 +10,10 @@ type DB interface {
|
||||||
DeleteSync([]byte)
|
DeleteSync([]byte)
|
||||||
Close()
|
Close()
|
||||||
NewBatch() Batch
|
NewBatch() Batch
|
||||||
|
Iterator() Iterator
|
||||||
|
|
||||||
// For debugging
|
// For debugging
|
||||||
Print()
|
Print()
|
||||||
Iterator() Iterator
|
|
||||||
Stats() map[string]string
|
Stats() map[string]string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,9 @@ type Iterator interface {
|
||||||
|
|
||||||
Key() []byte
|
Key() []byte
|
||||||
Value() []byte
|
Value() []byte
|
||||||
|
|
||||||
|
Release()
|
||||||
|
Error() error
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
10
db/mem_db.go
10
db/mem_db.go
|
@ -97,6 +97,16 @@ func (it *memDBIterator) Value() []byte {
|
||||||
return it.db.Get(it.Key())
|
return it.db.Get(it.Key())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (it *memDBIterator) Release() {
|
||||||
|
it.db = nil
|
||||||
|
it.keys = nil
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (it *memDBIterator) Error() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (db *MemDB) Iterator() Iterator {
|
func (db *MemDB) Iterator() Iterator {
|
||||||
it := newMemDBIterator()
|
it := newMemDBIterator()
|
||||||
it.db = db
|
it.db = db
|
||||||
|
|
Loading…
Reference in New Issue