github.com/zuoyebang/bitalosdb@v1.1.1-0.20240516111551-79a8c4d8ce20/internal_test.go (about) 1 // Copyright 2021 The Bitalosdb author(hustxrb@163.com) and other contributors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package bitalosdb 16 17 type internalIterAdapter struct { 18 internalIterator 19 key *InternalKey 20 val []byte 21 } 22 23 func newInternalIterAdapter(iter internalIterator) *internalIterAdapter { 24 return &internalIterAdapter{ 25 internalIterator: iter, 26 } 27 } 28 29 func (i *internalIterAdapter) update(key *InternalKey, val []byte) bool { 30 i.key = key 31 i.val = val 32 return i.key != nil 33 } 34 35 func (i *internalIterAdapter) String() string { 36 return "internal-iter-adapter" 37 } 38 39 func (i *internalIterAdapter) SeekGE(key []byte) bool { 40 return i.update(i.internalIterator.SeekGE(key)) 41 } 42 43 func (i *internalIterAdapter) SeekPrefixGE(prefix, key []byte, trySeekUsingNext bool) bool { 44 return i.update(i.internalIterator.SeekPrefixGE(prefix, key, trySeekUsingNext)) 45 } 46 47 func (i *internalIterAdapter) SeekLT(key []byte) bool { 48 return i.update(i.internalIterator.SeekLT(key)) 49 } 50 51 func (i *internalIterAdapter) First() bool { 52 return i.update(i.internalIterator.First()) 53 } 54 55 func (i *internalIterAdapter) Last() bool { 56 return i.update(i.internalIterator.Last()) 57 } 58 59 func (i *internalIterAdapter) Next() bool { 60 return i.update(i.internalIterator.Next()) 61 } 62 63 func (i *internalIterAdapter) Prev() bool { 64 return i.update(i.internalIterator.Prev()) 65 } 66 67 func (i *internalIterAdapter) Key() *InternalKey { 68 return i.key 69 } 70 71 func (i *internalIterAdapter) Value() []byte { 72 return i.val 73 } 74 75 func (i *internalIterAdapter) Valid() bool { 76 return i.key != nil 77 }