mirror of
				https://github.com/prometheus/prometheus.git
				synced 2025-10-31 08:21:16 +01:00 
			
		
		
		
	Add license text everywhere. And others.... Change-Id: I11ccde267a2ef7eb366c4788ba7aeae14ba7545c
		
			
				
	
	
		
			52 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2014 Prometheus Team
 | |
| // 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 index
 | |
| 
 | |
| import "encoding"
 | |
| 
 | |
| // KeyValueStore persists key/value pairs. Implementations must be fundamentally
 | |
| // goroutine-safe. However, it is the caller's responsibility that keys and
 | |
| // values can be safely marshaled and unmarshaled (via the MarshalBinary and
 | |
| // UnmarshalBinary methods of the keys and values). For example, if you call the
 | |
| // Put method of a KeyValueStore implementation, but the key or the value are
 | |
| // modified concurrently while being marshaled into its binary representation,
 | |
| // you obviously have a problem. Methods of KeyValueStore only return after
 | |
| // (un)marshaling is complete.
 | |
| type KeyValueStore interface {
 | |
| 	Put(key, value encoding.BinaryMarshaler) error
 | |
| 	// Get unmarshals the result into value. It returns false if no entry
 | |
| 	// could be found for key. If value is nil, Get behaves like Has.
 | |
| 	Get(key encoding.BinaryMarshaler, value encoding.BinaryUnmarshaler) (bool, error)
 | |
| 	Has(key encoding.BinaryMarshaler) (bool, error)
 | |
| 	// Delete returns an error if key does not exist.
 | |
| 	Delete(key encoding.BinaryMarshaler) error
 | |
| 
 | |
| 	NewBatch() Batch
 | |
| 	Commit(b Batch) error
 | |
| 	ForEach(func(kv KeyValueAccessor) error) error
 | |
| 
 | |
| 	Close() error
 | |
| }
 | |
| 
 | |
| // Batch allows KeyValueStore mutations to be pooled and committed together. An
 | |
| // implementation does not have to be goroutine-safe. Never modify a Batch
 | |
| // concurrently or commit the same batch multiple times concurrently. Marshaling
 | |
| // of keys and values is guaranteed to be complete when the Put or Delete methods
 | |
| // have returned.
 | |
| type Batch interface {
 | |
| 	Put(key, value encoding.BinaryMarshaler) error
 | |
| 	Delete(key encoding.BinaryMarshaler) error
 | |
| 	Reset()
 | |
| }
 |