fork of indigo with slightly nicer lexgen
1package backfill
2
3import (
4 "io"
5
6 "github.com/prometheus/client_golang/prometheus"
7)
8
9type instrumentedReader struct {
10 source io.ReadCloser
11 counter prometheus.Counter
12}
13
14func (r instrumentedReader) Read(b []byte) (int, error) {
15 n, err := r.source.Read(b)
16 r.counter.Add(float64(n))
17 return n, err
18}
19
20func (r instrumentedReader) Close() error {
21 var buf [32]byte
22 var n int
23 var err error
24 for err == nil {
25 n, err = r.source.Read(buf[:])
26 r.counter.Add(float64(n))
27 }
28 closeerr := r.source.Close()
29 if err != nil && err != io.EOF {
30 return err
31 }
32 return closeerr
33}