Decode implements the Decoder interface.
(v *dto.MetricFamily)
| 156 | |
| 157 | // Decode implements the Decoder interface. |
| 158 | func (d *textDecoder) Decode(v *dto.MetricFamily) error { |
| 159 | if d.err == nil { |
| 160 | // Read all metrics in one shot. |
| 161 | p := NewTextParser(d.s) |
| 162 | d.fams, d.err = p.TextToMetricFamilies(d.r) |
| 163 | // If we don't get an error, store io.EOF for the end. |
| 164 | if d.err == nil { |
| 165 | d.err = io.EOF |
| 166 | } |
| 167 | } |
| 168 | // Pick off one MetricFamily per Decode until there's nothing left. |
| 169 | for key, fam := range d.fams { |
| 170 | v.Name = fam.Name |
| 171 | v.Help = fam.Help |
| 172 | v.Type = fam.Type |
| 173 | v.Metric = fam.Metric |
| 174 | delete(d.fams, key) |
| 175 | return nil |
| 176 | } |
| 177 | return d.err |
| 178 | } |
| 179 | |
| 180 | // SampleDecoder wraps a Decoder to extract samples from the metric families |
| 181 | // decoded by the wrapped Decoder. |
nothing calls this directly
no test coverage detected