Refactored the iterator to follow Go constructor conventions.

This commit is contained in:
Paul W. Homer 2017-03-30 11:51:11 -04:00
parent 34e2d6638d
commit 4fdcf51467
1 changed files with 14 additions and 17 deletions

View File

@ -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 {