mirror of
				https://source.quilibrium.com/quilibrium/ceremonyclient.git
				synced 2025-11-04 02:57:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
 * Copyright 2017 Dgraph Labs, Inc. and Contributors
 | 
						|
 * Modifications copyright (C) 2017 Andy Kimball and Contributors
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
 | 
						|
package arenaskl
 | 
						|
 | 
						|
import "github.com/cockroachdb/pebble/internal/base"
 | 
						|
 | 
						|
// flushIterator is an iterator over the skiplist object. Use Skiplist.NewFlushIter
 | 
						|
// to construct an iterator. The current state of the iterator can be cloned by
 | 
						|
// simply value copying the struct.
 | 
						|
type flushIterator struct {
 | 
						|
	Iterator
 | 
						|
	bytesIterated *uint64
 | 
						|
}
 | 
						|
 | 
						|
// flushIterator implements the base.InternalIterator interface.
 | 
						|
var _ base.InternalIterator = (*flushIterator)(nil)
 | 
						|
 | 
						|
func (it *flushIterator) String() string {
 | 
						|
	return "memtable"
 | 
						|
}
 | 
						|
 | 
						|
func (it *flushIterator) SeekGE(
 | 
						|
	key []byte, flags base.SeekGEFlags,
 | 
						|
) (*base.InternalKey, base.LazyValue) {
 | 
						|
	panic("pebble: SeekGE unimplemented")
 | 
						|
}
 | 
						|
 | 
						|
func (it *flushIterator) SeekPrefixGE(
 | 
						|
	prefix, key []byte, flags base.SeekGEFlags,
 | 
						|
) (*base.InternalKey, base.LazyValue) {
 | 
						|
	panic("pebble: SeekPrefixGE unimplemented")
 | 
						|
}
 | 
						|
 | 
						|
func (it *flushIterator) SeekLT(
 | 
						|
	key []byte, flags base.SeekLTFlags,
 | 
						|
) (*base.InternalKey, base.LazyValue) {
 | 
						|
	panic("pebble: SeekLT unimplemented")
 | 
						|
}
 | 
						|
 | 
						|
// First seeks position at the first entry in list. Returns the key and value
 | 
						|
// if the iterator is pointing at a valid entry, and (nil, nil) otherwise. Note
 | 
						|
// that First only checks the upper bound. It is up to the caller to ensure
 | 
						|
// that key is greater than or equal to the lower bound.
 | 
						|
func (it *flushIterator) First() (*base.InternalKey, base.LazyValue) {
 | 
						|
	key, val := it.Iterator.First()
 | 
						|
	if key == nil {
 | 
						|
		return nil, base.LazyValue{}
 | 
						|
	}
 | 
						|
	*it.bytesIterated += uint64(it.nd.allocSize)
 | 
						|
	return key, val
 | 
						|
}
 | 
						|
 | 
						|
// Next advances to the next position. Returns the key and value if the
 | 
						|
// iterator is pointing at a valid entry, and (nil, nil) otherwise.
 | 
						|
// Note: flushIterator.Next mirrors the implementation of Iterator.Next
 | 
						|
// due to performance. Keep the two in sync.
 | 
						|
func (it *flushIterator) Next() (*base.InternalKey, base.LazyValue) {
 | 
						|
	it.nd = it.list.getNext(it.nd, 0)
 | 
						|
	if it.nd == it.list.tail {
 | 
						|
		return nil, base.LazyValue{}
 | 
						|
	}
 | 
						|
	it.decodeKey()
 | 
						|
	*it.bytesIterated += uint64(it.nd.allocSize)
 | 
						|
	return &it.key, base.MakeInPlaceValue(it.value())
 | 
						|
}
 | 
						|
 | 
						|
func (it *flushIterator) NextPrefix(succKey []byte) (*base.InternalKey, base.LazyValue) {
 | 
						|
	panic("pebble: NextPrefix unimplemented")
 | 
						|
}
 | 
						|
 | 
						|
func (it *flushIterator) Prev() (*base.InternalKey, base.LazyValue) {
 | 
						|
	panic("pebble: Prev unimplemented")
 | 
						|
}
 |