github.com/mckael/restic@v0.8.3/internal/limiter/limiter.go (about) 1 package limiter 2 3 import ( 4 "io" 5 "net/http" 6 ) 7 8 // Limiter defines an interface that implementors can use to rate limit I/O 9 // according to some policy defined and configured by the implementor. 10 type Limiter interface { 11 // Upstream returns a rate limited reader that is intended to be used in 12 // uploads. 13 Upstream(r io.Reader) io.Reader 14 15 // Downstream returns a rate limited reader that is intended to be used 16 // for downloads. 17 Downstream(r io.Reader) io.Reader 18 19 // Transport returns an http.RoundTripper limited with the limiter. 20 Transport(http.RoundTripper) http.RoundTripper 21 }