| 
									
										
										
										
											2018-09-24 15:57:49 +03:00
										 |  |  | // 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 { | 
					
						
							| 
									
										
										
										
											2020-04-15 13:08:53 +02:00
										 |  |  | 	// NewIterator creates a binary-alphabetical iterator over a subset | 
					
						
							|  |  |  | 	// of database content with a particular key prefix, starting at a particular | 
					
						
							|  |  |  | 	// initial key (or after, if it does not exist). | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	// Note: This method assumes that the prefix is NOT part of the start, so there's | 
					
						
							|  |  |  | 	// no need for the caller to prepend the prefix to the start | 
					
						
							|  |  |  | 	NewIterator(prefix []byte, start []byte) Iterator | 
					
						
							| 
									
										
										
										
											2018-09-24 15:57:49 +03:00
										 |  |  | } |