cosmos-sdk/store/tracekv/iterator.go
Aleksandr Bezobchuk 03bca7b791
feat(store/v2): Merge Feature Branch (#18150)
Co-authored-by: cool-developer <51834436+cool-develope@users.noreply.github.com>
Co-authored-by: yihuang <huang@crypto.com>
2023-10-18 18:03:43 +00:00

58 lines
985 B
Go

package tracekv
import (
"io"
"cosmossdk.io/store/v2"
)
var _ store.Iterator = (*iterator)(nil)
type iterator struct {
parent store.Iterator
writer io.Writer
context store.TraceContext
}
func newIterator(w io.Writer, parent store.Iterator, tc store.TraceContext) store.Iterator {
return &iterator{
parent: parent,
writer: w,
context: tc,
}
}
func (itr *iterator) Domain() ([]byte, []byte) {
return itr.parent.Domain()
}
func (itr *iterator) Valid() bool {
return itr.parent.Valid()
}
func (itr *iterator) Next() bool {
return itr.parent.Next()
}
func (itr *iterator) Error() error {
return itr.parent.Error()
}
func (itr *iterator) Close() {
itr.parent.Close()
}
func (itr *iterator) Key() []byte {
key := itr.parent.Key()
writeOperation(itr.writer, IterKeyOp, itr.context, key, nil)
return key
}
func (itr *iterator) Value() []byte {
value := itr.parent.Value()
writeOperation(itr.writer, IterValueOp, itr.context, nil, value)
return value
}