62 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								// Copyright 2018 The go-ethereum Authors
							 | 
						||
| 
								 | 
							
								// This file is part of the go-ethereum library.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// The go-ethereum library is free software: you can redistribute it and/or modify
							 | 
						||
| 
								 | 
							
								// it under the terms of the GNU Lesser General Public License as published by
							 | 
						||
| 
								 | 
							
								// the Free Software Foundation, either version 3 of the License, or
							 | 
						||
| 
								 | 
							
								// (at your option) any later version.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// The go-ethereum library is distributed in the hope that it will be useful,
							 | 
						||
| 
								 | 
							
								// but WITHOUT ANY WARRANTY; without even the implied warranty of
							 | 
						||
| 
								 | 
							
								// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
							 | 
						||
| 
								 | 
							
								// GNU Lesser General Public License for more details.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// You should have received a copy of the GNU Lesser General Public License
							 | 
						||
| 
								 | 
							
								// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								package ethdb
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Iterator iterates over a database's key/value pairs in ascending key order.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// When it encounters an error any seek will return false and will yield no key/
							 | 
						||
| 
								 | 
							
								// value pairs. The error can be queried by calling the Error method. Calling
							 | 
						||
| 
								 | 
							
								// Release is still necessary.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// An iterator must be released after use, but it is not necessary to read an
							 | 
						||
| 
								 | 
							
								// iterator until exhaustion. An iterator is not safe for concurrent use, but it
							 | 
						||
| 
								 | 
							
								// is safe to use multiple iterators concurrently.
							 | 
						||
| 
								 | 
							
								type Iterator interface {
							 | 
						||
| 
								 | 
							
									// Next moves the iterator to the next key/value pair. It returns whether the
							 | 
						||
| 
								 | 
							
									// iterator is exhausted.
							 | 
						||
| 
								 | 
							
									Next() bool
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Error returns any accumulated error. Exhausting all the key/value pairs
							 | 
						||
| 
								 | 
							
									// is not considered to be an error.
							 | 
						||
| 
								 | 
							
									Error() error
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Key returns the key of the current key/value pair, or nil if done. The caller
							 | 
						||
| 
								 | 
							
									// should not modify the contents of the returned slice, and its contents may
							 | 
						||
| 
								 | 
							
									// change on the next call to Next.
							 | 
						||
| 
								 | 
							
									Key() []byte
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Value returns the value of the current key/value pair, or nil if done. The
							 | 
						||
| 
								 | 
							
									// caller should not modify the contents of the returned slice, and its contents
							 | 
						||
| 
								 | 
							
									// may change on the next call to Next.
							 | 
						||
| 
								 | 
							
									Value() []byte
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// Release releases associated resources. Release should always succeed and can
							 | 
						||
| 
								 | 
							
									// be called multiple times without causing error.
							 | 
						||
| 
								 | 
							
									Release()
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Iteratee wraps the NewIterator methods of a backing data store.
							 | 
						||
| 
								 | 
							
								type Iteratee interface {
							 | 
						||
| 
								 | 
							
									// NewIterator creates a binary-alphabetical iterator over the entire keyspace
							 | 
						||
| 
								 | 
							
									// contained within the key-value database.
							 | 
						||
| 
								 | 
							
									NewIterator() Iterator
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// NewIteratorWithPrefix creates a binary-alphabetical iterator over a subset
							 | 
						||
| 
								 | 
							
									// of database content with a particular key prefix.
							 | 
						||
| 
								 | 
							
									NewIteratorWithPrefix(prefix []byte) Iterator
							 | 
						||
| 
								 | 
							
								}
							 |