package store // Iterates over iterKVCache items. // if key is nil, means it was deleted. // Implements Iterator. type memIterator struct { start, end []byte items []KVPair } func newMemIterator(start, end []byte, items []KVPair) *memIterator { return &memIterator{ start: start, end: end, items: items, } } func (mi *memIterator) Domain() ([]byte, []byte) { return mi.start, mi.end } func (mi *memIterator) Valid() bool { return len(mi.items) > 0 } func (mi *memIterator) assertValid() { if !mi.Valid() { panic("memIterator is invalid") } } func (mi *memIterator) Next() { mi.assertValid() mi.items = mi.items[1:] } func (mi *memIterator) Key() []byte { mi.assertValid() return mi.items[0].Key } func (mi *memIterator) Value() []byte { mi.assertValid() return mi.items[0].Value } func (mi *memIterator) Release() { mi.start = nil mi.end = nil mi.items = nil }