package attribute
import "go.opentelemetry.io/otel/attribute"
Package attribute provides key and value attributes.
Index ¶
- func NewSetWithFiltered(kvs []KeyValue, filter Filter) (Set, []KeyValue)
- func NewSetWithSortableFiltered(kvs []KeyValue, tmp *Sortable, filter Filter) (Set, []KeyValue)
- type Distinct
- type Encoder
- type EncoderID
- type Filter
- type Iterator
- func (i *Iterator) Attribute() KeyValue
- func (i *Iterator) IndexedLabel() (int, KeyValue)
- func (i *Iterator) Label() KeyValue
- func (i *Iterator) Len() int
- func (i *Iterator) Next() bool
- func (i *Iterator) ToSlice() []KeyValue
- type Key
- func (k Key) Bool(v bool) KeyValue
- func (k Key) BoolSlice(v []bool) KeyValue
- func (k Key) Defined() bool
- func (k Key) Float64(v float64) KeyValue
- func (k Key) Float64Slice(v []float64) KeyValue
- func (k Key) Int(v int) KeyValue
- func (k Key) Int64(v int64) KeyValue
- func (k Key) Int64Slice(v []int64) KeyValue
- func (k Key) IntSlice(v []int) KeyValue
- func (k Key) String(v string) KeyValue
- func (k Key) StringSlice(v []string) KeyValue
- type KeyValue
- func Bool(k string, v bool) KeyValue
- func BoolSlice(k string, v []bool) KeyValue
- func Float64(k string, v float64) KeyValue
- func Float64Slice(k string, v []float64) KeyValue
- func Int(k string, v int) KeyValue
- func Int64(k string, v int64) KeyValue
- func Int64Slice(k string, v []int64) KeyValue
- func IntSlice(k string, v []int) KeyValue
- func String(k, v string) KeyValue
- func StringSlice(k string, v []string) KeyValue
- func Stringer(k string, v fmt.Stringer) KeyValue
- func (kv KeyValue) Valid() bool
- type MergeIterator
- func NewMergeIterator(s1, s2 *Set) MergeIterator
- func (m *MergeIterator) Label() KeyValue
- func (m *MergeIterator) Next() bool
- type Set
- func EmptySet() *Set
- func NewSet(kvs ...KeyValue) Set
- func NewSetWithSortable(kvs []KeyValue, tmp *Sortable) Set
- func (l *Set) Encoded(encoder Encoder) string
- func (l *Set) Equals(o *Set) bool
- func (l *Set) Equivalent() Distinct
- func (l *Set) Filter(re Filter) (Set, []KeyValue)
- func (l *Set) Get(idx int) (KeyValue, bool)
- func (l *Set) HasValue(k Key) bool
- func (l *Set) Iter() Iterator
- func (l *Set) Len() int
- func (l *Set) MarshalJSON() ([]byte, error)
- func (l Set) MarshalLog() interface{}
- func (l *Set) ToSlice() []KeyValue
- func (l *Set) Value(k Key) (Value, bool)
- type Sortable
- func (l *Sortable) Len() int
- func (l *Sortable) Less(i, j int) bool
- func (l *Sortable) Swap(i, j int)
- type Type
- type Value
- func BoolSliceValue(v []bool) Value
- func BoolValue(v bool) Value
- func Float64SliceValue(v []float64) Value
- func Float64Value(v float64) Value
- func Int64SliceValue(v []int64) Value
- func Int64Value(v int64) Value
- func IntSliceValue(v []int) Value
- func IntValue(v int) Value
- func StringSliceValue(v []string) Value
- func StringValue(v string) Value
- func (v Value) AsBool() bool
- func (v Value) AsBoolSlice() []bool
- func (v Value) AsFloat64() float64
- func (v Value) AsFloat64Slice() []float64
- func (v Value) AsInt64() int64
- func (v Value) AsInt64Slice() []int64
- func (v Value) AsInterface() interface{}
- func (v Value) AsString() string
- func (v Value) AsStringSlice() []string
- func (v Value) Emit() string
- func (v Value) MarshalJSON() ([]byte, error)
- func (v Value) Type() Type
Functions ¶
func NewSetWithFiltered ¶
NewSetWithFiltered returns a new `Set`. See the documentation for `NewSetWithSortableFiltered` for more details.
This call includes a `Filter` to include/exclude label keys from the return value. Excluded keys are returned as a slice of label values.
func NewSetWithSortableFiltered ¶
NewSetWithSortableFiltered returns a new `Set`.
Duplicate keys are eliminated by taking the last value. This re-orders the input slice so that unique last-values are contiguous at the end of the slice.
This ensures the following:
- Last-value-wins semantics - Caller sees the reordering, but doesn't lose values - Repeated call preserve last-value wins.
Note that methods are defined on `*Set`, although this returns `Set`. Callers can avoid memory allocations by:
- allocating a `Sortable` for use as a temporary in this method
- allocating a `Set` for storing the return value of this constructor.
The result maintains a cache of encoded labels, by attribute.EncoderID. This value should not be copied after its first use.
The second `[]KeyValue` return value is a list of labels that were excluded by the Filter (if non-nil).
Types ¶
type Distinct ¶
type Distinct struct {
// contains filtered or unexported fields
}
Distinct wraps a variable-size array of `KeyValue`, constructed with keys in sorted order. This can be used as a map key or for equality checking between Sets.
func (Distinct) Valid ¶
Valid returns true if this value refers to a valid `*Set`.
type Encoder ¶
type Encoder interface { // Encode returns the serialized encoding of the label // set using its Iterator. This result may be cached // by a attribute.Set. Encode(iterator Iterator) string // ID returns a value that is unique for each class of // label encoder. Label encoders allocate these using // `NewEncoderID`. ID() EncoderID }
Encoder is a mechanism for serializing a label set into a specific string representation that supports caching, to avoid repeated serialization. An example could be an exporter encoding the label set into a wire representation.
func DefaultEncoder ¶
func DefaultEncoder() Encoder
DefaultEncoder returns a label encoder that encodes labels in such a way that each escaped label's key is followed by an equal sign and then by an escaped label's value. All key-value pairs are separated by a comma.
Escaping is done by prepending a backslash before either a backslash, equal sign or a comma.
type EncoderID ¶
type EncoderID struct {
// contains filtered or unexported fields
}
EncoderID is used to identify distinct Encoder implementations, for caching encoded results.
func NewEncoderID ¶
func NewEncoderID() EncoderID
NewEncoderID returns a unique label encoder ID. It should be called once per each type of label encoder. Preferably in init() or in var definition.
func (EncoderID) Valid ¶
Valid returns true if this encoder ID was allocated by `NewEncoderID`. Invalid encoder IDs will not be cached.
type Filter ¶
Filter supports removing certain labels from label sets. When the filter returns true, the label will be kept in the filtered label set. When the filter returns false, the label is excluded from the filtered label set, and the label instead appears in the `removed` list of excluded labels.
type Iterator ¶
type Iterator struct {
// contains filtered or unexported fields
}
Iterator allows iterating over the set of labels in order, sorted by key.
func (*Iterator) Attribute ¶
Attribute is a synonym for Label().
func (*Iterator) IndexedLabel ¶
IndexedLabel returns current index and attribute. Must be called only after Next returns true.
func (*Iterator) Label ¶
Label returns current KeyValue. Must be called only after Next returns true.
func (*Iterator) Len ¶
Len returns a number of labels in the iterator's `*Set`.
func (*Iterator) Next ¶
Next moves the iterator to the next position. Returns false if there are no more labels.
func (*Iterator) ToSlice ¶
ToSlice is a convenience function that creates a slice of labels from the passed iterator. The iterator is set up to start from the beginning before creating the slice.
type Key ¶
type Key string
Key represents the key part in key-value pairs. It's a string. The allowed character set in the key depends on the use of the key.
func (Key) Bool ¶
Bool creates a KeyValue instance with a BOOL Value.
If creating both a key and value at the same time, use the provided convenience function instead -- Bool(name, value).
func (Key) BoolSlice ¶
BoolSlice creates a KeyValue instance with a BOOLSLICE Value.
If creating both a key and value at the same time, use the provided convenience function instead -- BoolSlice(name, value).
func (Key) Defined ¶
Defined returns true for non-empty keys.
func (Key) Float64 ¶
Float64 creates a KeyValue instance with a FLOAT64 Value.
If creating both a key and value at the same time, use the provided convenience function instead -- Float64(name, value).
func (Key) Float64Slice ¶
Float64Slice creates a KeyValue instance with a FLOAT64SLICE Value.
If creating both a key and value at the same time, use the provided convenience function instead -- Float64(name, value).
func (Key) Int ¶
Int creates a KeyValue instance with an INT64 Value.
If creating both a key and value at the same time, use the provided convenience function instead -- Int(name, value).
func (Key) Int64 ¶
Int64 creates a KeyValue instance with an INT64 Value.
If creating both a key and value at the same time, use the provided convenience function instead -- Int64(name, value).
func (Key) Int64Slice ¶
Int64Slice creates a KeyValue instance with an INT64SLICE Value.
If creating both a key and value at the same time, use the provided convenience function instead -- Int64Slice(name, value).
func (Key) IntSlice ¶
IntSlice creates a KeyValue instance with an INT64SLICE Value.
If creating both a key and value at the same time, use the provided convenience function instead -- IntSlice(name, value).
func (Key) String ¶
String creates a KeyValue instance with a STRING Value.
If creating both a key and value at the same time, use the provided convenience function instead -- String(name, value).
func (Key) StringSlice ¶
StringSlice creates a KeyValue instance with a STRINGSLICE Value.
If creating both a key and value at the same time, use the provided convenience function instead -- StringSlice(name, value).
type KeyValue ¶
KeyValue holds a key and value pair.
func Bool ¶
Bool creates a KeyValue with a BOOL Value type.
func BoolSlice ¶
BoolSlice creates a KeyValue with a BOOLSLICE Value type.
func Float64 ¶
Float64 creates a KeyValue with a FLOAT64 Value type.
func Float64Slice ¶
Float64Slice creates a KeyValue with a FLOAT64SLICE Value type.
func Int ¶
Int creates a KeyValue with an INT64 Value type.
func Int64 ¶
Int64 creates a KeyValue with an INT64 Value type.
func Int64Slice ¶
Int64Slice creates a KeyValue with an INT64SLICE Value type.
func IntSlice ¶
IntSlice creates a KeyValue with an INT64SLICE Value type.
func String ¶
String creates a KeyValue with a STRING Value type.
func StringSlice ¶
StringSlice creates a KeyValue with a STRINGSLICE Value type.
func Stringer ¶
Stringer creates a new key-value pair with a passed name and a string value generated by the passed Stringer interface.
func (KeyValue) Valid ¶
Valid returns if kv is a valid OpenTelemetry attribute.
type MergeIterator ¶
type MergeIterator struct {
// contains filtered or unexported fields
}
MergeIterator supports iterating over two sets of labels while eliminating duplicate values from the combined set. The first iterator value takes precedence.
func NewMergeIterator ¶
func NewMergeIterator(s1, s2 *Set) MergeIterator
NewMergeIterator returns a MergeIterator for merging two label sets Duplicates are resolved by taking the value from the first set.
func (*MergeIterator) Label ¶
func (m *MergeIterator) Label() KeyValue
Label returns the current value after Next() returns true.
func (*MergeIterator) Next ¶
func (m *MergeIterator) Next() bool
Next returns true if there is another label available.
type Set ¶
type Set struct {
// contains filtered or unexported fields
}
Set is the representation for a distinct label set. It manages an immutable set of labels, with an internal cache for storing label encodings.
This type supports the `Equivalent` method of comparison using values of type `Distinct`.
This type is used to implement: 1. Metric labels 2. Resource sets 3. Correlation map (TODO)
func EmptySet ¶
func EmptySet() *Set
EmptySet returns a reference to a Set with no elements.
This is a convenience provided for optimized calling utility.
func NewSet ¶
NewSet returns a new `Set`. See the documentation for `NewSetWithSortableFiltered` for more details.
Except for empty sets, this method adds an additional allocation compared with calls that include a `*Sortable`.
func NewSetWithSortable ¶
NewSetWithSortable returns a new `Set`. See the documentation for `NewSetWithSortableFiltered` for more details.
This call includes a `*Sortable` option as a memory optimization.
func (*Set) Encoded ¶
Encoded returns the encoded form of this set, according to `encoder`.
func (*Set) Equals ¶
Equals returns true if the argument set is equivalent to this set.
func (*Set) Equivalent ¶
Equivalent returns a value that may be used as a map key. The Distinct type guarantees that the result will equal the equivalent Distinct value of any label set with the same elements as this, where sets are made unique by choosing the last value in the input for any given key.
func (*Set) Filter ¶
Filter returns a filtered copy of this `Set`. See the documentation for `NewSetWithSortableFiltered` for more details.
func (*Set) Get ¶
Get returns the KeyValue at ordered position `idx` in this set.
func (*Set) HasValue ¶
HasValue tests whether a key is defined in this set.
func (*Set) Iter ¶
Iter returns an iterator for visiting the labels in this set.
func (*Set) Len ¶
Len returns the number of labels in this set.
func (*Set) MarshalJSON ¶
MarshalJSON returns the JSON encoding of the `*Set`.
func (Set) MarshalLog ¶
func (l Set) MarshalLog() interface{}
MarshalLog is the marshaling function used by the logging system to represent this exporter.
func (*Set) ToSlice ¶
ToSlice returns the set of labels belonging to this set, sorted, where keys appear no more than once.
func (*Set) Value ¶
Value returns the value of a specified key in this set.
type Sortable ¶
type Sortable []KeyValue
Sortable implements `sort.Interface`, used for sorting `KeyValue`. This is an exported type to support a memory optimization. A pointer to one of these is needed for the call to `sort.Stable()`, which the caller may provide in order to avoid an allocation. See `NewSetWithSortable()`.
func (*Sortable) Len ¶
Len implements `sort.Interface`.
func (*Sortable) Less ¶
Less implements `sort.Interface`.
func (*Sortable) Swap ¶
Swap implements `sort.Interface`.
type Type ¶
type Type int
Type describes the type of the data Value holds.
const ( // INVALID is used for a Value with no value set. INVALID Type = iota // BOOL is a boolean Type Value. BOOL // INT64 is a 64-bit signed integral Type Value. INT64 // FLOAT64 is a 64-bit floating point Type Value. FLOAT64 // STRING is a string Type Value. STRING // BOOLSLICE is a slice of booleans Type Value. BOOLSLICE // INT64SLICE is a slice of 64-bit signed integral numbers Type Value. INT64SLICE // FLOAT64SLICE is a slice of 64-bit floating point numbers Type Value. FLOAT64SLICE // STRINGSLICE is a slice of strings Type Value. STRINGSLICE )
func (Type) String ¶
type Value ¶
type Value struct {
// contains filtered or unexported fields
}
Value represents the value part in key-value pairs.
func BoolSliceValue ¶
BoolSliceValue creates a BOOLSLICE Value.
func BoolValue ¶
BoolValue creates a BOOL Value.
func Float64SliceValue ¶
Float64SliceValue creates a FLOAT64SLICE Value.
func Float64Value ¶
Float64Value creates a FLOAT64 Value.
func Int64SliceValue ¶
Int64SliceValue creates an INT64SLICE Value.
func Int64Value ¶
Int64Value creates an INT64 Value.
func IntSliceValue ¶
IntSliceValue creates an INTSLICE Value.
func IntValue ¶
IntValue creates an INT64 Value.
func StringSliceValue ¶
StringSliceValue creates a STRINGSLICE Value.
func StringValue ¶
StringValue creates a STRING Value.
func (Value) AsBool ¶
AsBool returns the bool value. Make sure that the Value's type is BOOL.
func (Value) AsBoolSlice ¶
AsBoolSlice returns the []bool value. Make sure that the Value's type is BOOLSLICE.
func (Value) AsFloat64 ¶
AsFloat64 returns the float64 value. Make sure that the Value's type is FLOAT64.
func (Value) AsFloat64Slice ¶
AsFloat64Slice returns the []float64 value. Make sure that the Value's type is FLOAT64SLICE.
func (Value) AsInt64 ¶
AsInt64 returns the int64 value. Make sure that the Value's type is INT64.
func (Value) AsInt64Slice ¶
AsInt64Slice returns the []int64 value. Make sure that the Value's type is INT64SLICE.
func (Value) AsInterface ¶
func (v Value) AsInterface() interface{}
AsInterface returns Value's data as interface{}.
func (Value) AsString ¶
AsString returns the string value. Make sure that the Value's type is STRING.
func (Value) AsStringSlice ¶
AsStringSlice returns the []string value. Make sure that the Value's type is STRINGSLICE.
func (Value) Emit ¶
Emit returns a string representation of Value's data.
func (Value) MarshalJSON ¶
MarshalJSON returns the JSON encoding of the Value.
func (Value) Type ¶
Type returns a type of the Value.
Source Files ¶
doc.go encoder.go iterator.go key.go kv.go set.go type_string.go value.go
- Version
- v1.6.0
- Published
- Mar 23, 2022
- Platform
- windows/amd64
- Imports
- 9 packages
- Last checked
- 4 minutes ago –
Tools for package owners.