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 | ||
|  | } |