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  }