|
|
|
@ -11,7 +11,7 @@ |
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
|
// limitations under the License.
|
|
|
|
|
|
|
|
|
|
//go:build stringlabels
|
|
|
|
|
//go:build !slicelabels && !dedupelabels
|
|
|
|
|
|
|
|
|
|
package labels |
|
|
|
|
|
|
|
|
@ -70,7 +70,7 @@ func (ls Labels) IsZero() bool { |
|
|
|
|
|
|
|
|
|
// MatchLabels returns a subset of Labels that matches/does not match with the provided label names based on the 'on' boolean.
|
|
|
|
|
// If on is set to true, it returns the subset of labels that match with the provided label names and its inverse when 'on' is set to false.
|
|
|
|
|
// TODO: This is only used in printing an error message
|
|
|
|
|
// TODO: This is only used in printing an error message.
|
|
|
|
|
func (ls Labels) MatchLabels(on bool, names ...string) Labels { |
|
|
|
|
b := NewBuilder(ls) |
|
|
|
|
if on { |
|
|
|
@ -292,6 +292,7 @@ func Equal(ls, o Labels) bool { |
|
|
|
|
func EmptyLabels() Labels { |
|
|
|
|
return Labels{} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func yoloBytes(s string) []byte { |
|
|
|
|
return unsafe.Slice(unsafe.StringData(s), len(s)) |
|
|
|
|
} |
|
|
|
@ -364,7 +365,7 @@ func Compare(a, b Labels) int { |
|
|
|
|
return +1 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Copy labels from b on top of whatever was in ls previously, reusing memory or expanding if needed.
|
|
|
|
|
// CopyFrom will copy labels from b on top of whatever was in ls previously, reusing memory or expanding if needed.
|
|
|
|
|
func (ls *Labels) CopyFrom(b Labels) { |
|
|
|
|
ls.data = b.data // strings are immutable
|
|
|
|
|
} |
|
|
|
@ -434,11 +435,11 @@ func (ls Labels) DropMetricName() Labels { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// InternStrings is a no-op because it would only save when the whole set of labels is identical.
|
|
|
|
|
func (ls *Labels) InternStrings(intern func(string) string) { |
|
|
|
|
func (ls *Labels) InternStrings(_ func(string) string) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// ReleaseStrings is a no-op for the same reason as InternStrings.
|
|
|
|
|
func (ls Labels) ReleaseStrings(release func(string)) { |
|
|
|
|
func (ls Labels) ReleaseStrings(_ func(string)) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Builder allows modifying Labels.
|
|
|
|
@ -603,7 +604,7 @@ func (b *ScratchBuilder) Add(name, value string) { |
|
|
|
|
b.add = append(b.add, Label{Name: name, Value: value}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Add a name/value pair, using []byte instead of string to reduce memory allocations.
|
|
|
|
|
// UnsafeAddBytes adds a name/value pair using []byte instead of string to reduce memory allocations.
|
|
|
|
|
// The values must remain live until Labels() is called.
|
|
|
|
|
func (b *ScratchBuilder) UnsafeAddBytes(name, value []byte) { |
|
|
|
|
b.add = append(b.add, Label{Name: yoloString(name), Value: yoloString(value)}) |
|
|
|
@ -631,7 +632,7 @@ func (b *ScratchBuilder) Labels() Labels { |
|
|
|
|
return b.output |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Write the newly-built Labels out to ls, reusing an internal buffer.
|
|
|
|
|
// Overwrite will write the newly-built Labels out to ls, reusing an internal buffer.
|
|
|
|
|
// Callers must ensure that there are no other references to ls, or any strings fetched from it.
|
|
|
|
|
func (b *ScratchBuilder) Overwrite(ls *Labels) { |
|
|
|
|
size := labelsSize(b.add) |
|
|
|
@ -644,7 +645,7 @@ func (b *ScratchBuilder) Overwrite(ls *Labels) { |
|
|
|
|
ls.data = yoloString(b.overwriteBuffer) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Symbol-table is no-op, just for api parity with dedupelabels.
|
|
|
|
|
// SymbolTable is no-op, just for api parity with dedupelabels.
|
|
|
|
|
type SymbolTable struct{} |
|
|
|
|
|
|
|
|
|
func NewSymbolTable() *SymbolTable { return nil } |
|
|
|
|