62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package perfdata // import nocternity.net/gomonop/pkg/perfdata
|
|
|
|
// Performance data range.
|
|
type Range struct {
|
|
start string
|
|
end string
|
|
inside bool
|
|
}
|
|
|
|
// Creates a performance data range from -inf to 0 and from the specified
|
|
// value to +inf.
|
|
func RangeMax(max string) *Range {
|
|
if !valueCheck.MatchString(max) {
|
|
panic("invalid performance data range maximum value")
|
|
}
|
|
pdRange := &Range{}
|
|
pdRange.start = "0"
|
|
pdRange.end = max
|
|
return pdRange
|
|
}
|
|
|
|
// Creates a performance data range from -inf to the specified minimal value
|
|
// and from the specified maximal value to +inf.
|
|
func RangeMinMax(min, max string) *Range {
|
|
if !valueCheck.MatchString(max) {
|
|
panic("invalid performance data range maximum value")
|
|
}
|
|
if !rangeMinCheck.MatchString(min) {
|
|
panic("invalid performance data range minimum value")
|
|
}
|
|
pdRange := &Range{}
|
|
pdRange.start = min
|
|
pdRange.end = max
|
|
return pdRange
|
|
}
|
|
|
|
// Inverts the range.
|
|
func (r *Range) Inside() *Range {
|
|
r.inside = true
|
|
return r
|
|
}
|
|
|
|
// Generates the range's string representation so it can be sent to the
|
|
// monitoring system.
|
|
func (r *Range) String() string {
|
|
var start, inside string
|
|
|
|
switch r.start {
|
|
case "":
|
|
start = "~"
|
|
case "0":
|
|
start = ""
|
|
default:
|
|
start = r.start
|
|
}
|
|
|
|
if r.inside {
|
|
inside = "@"
|
|
}
|
|
|
|
return inside + start + ":" + r.end
|
|
}
|