Source File
value.go
Belonging Package
github.com/prometheus/common/model
package model
import (
)
ZeroSample = Sample{Timestamp: Earliest}
)
type SampleValue float64
func ( *SampleValue) ( []byte) error {
if len() < 2 || [0] != '"' || [len()-1] != '"' {
return fmt.Errorf("sample value must be a quoted string")
}
, := strconv.ParseFloat(string([1:len()-1]), 64)
if != nil {
return
}
* = SampleValue()
return nil
}
func ( SampleValue) ( SampleValue) bool {
if == {
return true
}
return math.IsNaN(float64()) && math.IsNaN(float64())
}
func ( SampleValue) () string {
return strconv.FormatFloat(float64(), 'f', -1, 64)
}
type SamplePair struct {
Timestamp Time
Value SampleValue
}
func ( *SamplePair) ( []byte) error {
:= [...]json.Unmarshaler{&.Timestamp, &.Value}
return json.Unmarshal(, &)
}
func ( *SamplePair) ( *SamplePair) bool {
return == || (.Value.Equal(.Value) && .Timestamp.Equal(.Timestamp))
}
func ( SamplePair) () string {
return fmt.Sprintf("%s @[%s]", .Value, .Timestamp)
}
func ( *Sample) ( *Sample) bool {
if == {
return true
}
if !.Metric.Equal(.Metric) {
return false
}
if !.Timestamp.Equal(.Timestamp) {
return false
}
return .Value.Equal(.Value)
}
func ( Sample) () string {
return fmt.Sprintf("%s => %s", .Metric, SamplePair{
Timestamp: .Timestamp,
Value: .Value,
})
}
type Value interface {
Type() ValueType
String() string
}
func (Matrix) () ValueType { return ValMatrix }
func (Vector) () ValueType { return ValVector }
func (*Scalar) () ValueType { return ValScalar }
func (*String) () ValueType { return ValString }
type ValueType int
const (
ValNone ValueType = iota
ValScalar
ValVector
ValMatrix
ValString
)
func ( ValueType) () ([]byte, error) {
return json.Marshal(.String())
}
func ( *ValueType) ( []byte) error {
var string
if := json.Unmarshal(, &); != nil {
return
}
switch {
case "<ValNone>":
* = ValNone
case "scalar":
* = ValScalar
case "vector":
* = ValVector
case "matrix":
* = ValMatrix
case "string":
* = ValString
default:
return fmt.Errorf("unknown value type %q", )
}
return nil
}
func ( ValueType) () string {
switch {
case ValNone:
return "<ValNone>"
case ValScalar:
return "scalar"
case ValVector:
return "vector"
case ValMatrix:
return "matrix"
case ValString:
return "string"
}
panic("ValueType.String: unhandled value type")
}
type Matrix []*SampleStream
func ( Matrix) () int { return len() }
func ( Matrix) (, int) bool { return [].Metric.Before([].Metric) }
func ( Matrix) (, int) { [], [] = [], [] }
func ( Matrix) () string {
:= make(Matrix, len())
copy(, )
sort.Sort()
:= make([]string, len())
for , := range {
[] = .String()
}
return strings.Join(, "\n")
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |