Refactored the iterator to follow Go constructor conventions.
This commit is contained in:
parent
34e2d6638d
commit
4fdcf51467
31
mem_db.go
31
mem_db.go
|
@ -77,21 +77,8 @@ type memDBIterator struct {
|
|||
db *MemDB
|
||||
}
|
||||
|
||||
func (it *memDBIterator) Create(db *MemDB) *memDBIterator {
|
||||
db.mtx.Lock()
|
||||
defer db.mtx.Unlock()
|
||||
|
||||
if it == nil {
|
||||
it = &memDBIterator{}
|
||||
}
|
||||
it.db = db
|
||||
it.last = -1
|
||||
|
||||
// unfortunately we need a copy of all of the keys
|
||||
for key, _ := range db.db {
|
||||
it.keys = append(it.keys, key)
|
||||
}
|
||||
return it
|
||||
func newMemDBIterator() *memDBIterator {
|
||||
return &memDBIterator{}
|
||||
}
|
||||
|
||||
func (it *memDBIterator) Next() bool {
|
||||
|
@ -114,8 +101,18 @@ func (it *memDBIterator) Value() []byte {
|
|||
}
|
||||
|
||||
func (db *MemDB) Iterator() Iterator {
|
||||
var it *memDBIterator
|
||||
return it.Create(db)
|
||||
it := newMemDBIterator()
|
||||
it.db = db
|
||||
it.last = -1
|
||||
|
||||
db.mtx.Lock()
|
||||
defer db.mtx.Unlock()
|
||||
|
||||
// unfortunately we need a copy of all of the keys
|
||||
for key, _ := range db.db {
|
||||
it.keys = append(it.keys, key)
|
||||
}
|
||||
return it
|
||||
}
|
||||
|
||||
func (db *MemDB) NewBatch() Batch {
|
||||
|
|
Loading…
Reference in New Issue