MCPcopy Create free account
hub / github.com/DNAProject/DNA / next

Method next

core/store/overlaydb/iterator.go:136–188  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

134}
135
136func (iter *JoinIter) next() bool {
137 if (iter.keyOrigin == FromMem || iter.keyOrigin == FromBoth) && iter.nextMemEnd == false {
138 iter.nextMemEnd = !iter.memdb.Next()
139 }
140 if (iter.keyOrigin == FromBack || iter.keyOrigin == FromBoth) && iter.nextBackEnd == false {
141 iter.nextBackEnd = !iter.backend.Next()
142 }
143
144 // check error
145 if iter.Error() != nil {
146 return false
147 }
148
149 if iter.nextBackEnd {
150 if iter.nextMemEnd {
151 iter.key = nil
152 iter.value = nil
153 return false
154 } else {
155 iter.key = iter.memdb.Key()
156 iter.value = iter.memdb.Value()
157 iter.keyOrigin = FromMem
158 }
159 } else {
160 if iter.nextMemEnd {
161 iter.key = iter.backend.Key()
162 iter.value = iter.backend.Value()
163 iter.keyOrigin = FromBack
164 } else {
165 bkey := iter.backend.Key()
166 mkey := iter.memdb.Key()
167 cmp := iter.cmp.Compare(mkey, bkey)
168 switch cmp {
169 case -1:
170 iter.key = mkey
171 iter.value = iter.memdb.Value()
172 iter.keyOrigin = FromMem
173 case 0:
174 iter.key = mkey
175 iter.value = iter.memdb.Value()
176 iter.keyOrigin = FromBoth
177 case 1:
178 iter.key = bkey
179 iter.value = iter.backend.Value()
180 iter.keyOrigin = FromBack
181 default:
182 panic("unreachable")
183 }
184 }
185 }
186
187 return true
188}
189
190func (iter *JoinIter) Release() {
191 iter.memdb.Release()

Callers 2

FirstMethod · 0.95
NextMethod · 0.95

Calls 4

ErrorMethod · 0.95
NextMethod · 0.65
KeyMethod · 0.65
ValueMethod · 0.65

Tested by

no test coverage detected