package econetmetrics import "go.opentelemetry.io/otel/metric" // gaugeBuilder creates observable gauges, accumulating them for a single // RegisterCallback and short-circuiting on the first creation error. // // Units are intentionally baked into the metric names (Prometheus idiom) // rather than set via metric.WithUnit — the OTEL→Prometheus exporter would // otherwise append a second unit suffix (e.g. econet_setpoint_fahrenheit_F). type gaugeBuilder struct { m metric.Meter obs []metric.Observable err error } func (b *gaugeBuilder) i64(name, desc string) metric.Int64ObservableGauge { if b.err != nil { return nil } g, err := b.m.Int64ObservableGauge(name, metric.WithDescription(desc)) if err != nil { b.err = err return nil } b.obs = append(b.obs, g) return g } func (b *gaugeBuilder) f64(name, desc string) metric.Float64ObservableGauge { if b.err != nil { return nil } g, err := b.m.Float64ObservableGauge(name, metric.WithDescription(desc)) if err != nil { b.err = err return nil } b.obs = append(b.obs, g) return g }