| 
									
										
										
										
											2023-05-09 19:19:48 +02:00
										 |  |  | // Copyright The OpenTelemetry Authors | 
					
						
							| 
									
										
										
										
											2024-04-11 11:46:18 +02:00
										 |  |  | // SPDX-License-Identifier: Apache-2.0 | 
					
						
							| 
									
										
										
										
											2023-05-09 19:19:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | package attribute // import "go.opentelemetry.io/otel/attribute" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // KeyValue holds a key and value pair. | 
					
						
							|  |  |  | type KeyValue struct { | 
					
						
							|  |  |  | 	Key   Key | 
					
						
							|  |  |  | 	Value Value | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Valid returns if kv is a valid OpenTelemetry attribute. | 
					
						
							|  |  |  | func (kv KeyValue) Valid() bool { | 
					
						
							|  |  |  | 	return kv.Key.Defined() && kv.Value.Type() != INVALID | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Bool creates a KeyValue with a BOOL Value type. | 
					
						
							|  |  |  | func Bool(k string, v bool) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).Bool(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // BoolSlice creates a KeyValue with a BOOLSLICE Value type. | 
					
						
							|  |  |  | func BoolSlice(k string, v []bool) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).BoolSlice(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Int creates a KeyValue with an INT64 Value type. | 
					
						
							|  |  |  | func Int(k string, v int) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).Int(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // IntSlice creates a KeyValue with an INT64SLICE Value type. | 
					
						
							|  |  |  | func IntSlice(k string, v []int) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).IntSlice(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Int64 creates a KeyValue with an INT64 Value type. | 
					
						
							|  |  |  | func Int64(k string, v int64) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).Int64(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Int64Slice creates a KeyValue with an INT64SLICE Value type. | 
					
						
							|  |  |  | func Int64Slice(k string, v []int64) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).Int64Slice(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Float64 creates a KeyValue with a FLOAT64 Value type. | 
					
						
							|  |  |  | func Float64(k string, v float64) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).Float64(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Float64Slice creates a KeyValue with a FLOAT64SLICE Value type. | 
					
						
							|  |  |  | func Float64Slice(k string, v []float64) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).Float64Slice(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // String creates a KeyValue with a STRING Value type. | 
					
						
							|  |  |  | func String(k, v string) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).String(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // StringSlice creates a KeyValue with a STRINGSLICE Value type. | 
					
						
							|  |  |  | func StringSlice(k string, v []string) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).StringSlice(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Stringer creates a new key-value pair with a passed name and a string | 
					
						
							|  |  |  | // value generated by the passed Stringer interface. | 
					
						
							|  |  |  | func Stringer(k string, v fmt.Stringer) KeyValue { | 
					
						
							|  |  |  | 	return Key(k).String(v.String()) | 
					
						
							|  |  |  | } |