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)
|
||||
Close()
|
||||
NewBatch() Batch
|
||||
Iterator() Iterator
|
||||
|
||||
// For debugging
|
||||
Print()
|
||||
Iterator() Iterator
|
||||
Stats() map[string]string
|
||||
}
|
||||
|
||||
|
@ -28,6 +28,9 @@ type Iterator interface {
|
|||
|
||||
Key() []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())
|
||||
}
|
||||
|
||||
func (it *memDBIterator) Release() {
|
||||
it.db = nil
|
||||
it.keys = nil
|
||||
return
|
||||
}
|
||||
|
||||
func (it *memDBIterator) Error() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *MemDB) Iterator() Iterator {
|
||||
it := newMemDBIterator()
|
||||
it.db = db
|
||||
|
|
Loading…
Reference in New Issue