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 }