restic/internal/backend/limiter/limiter.go

30 lines
854 B
Go
Raw Normal View History

package limiter
import (
"io"
2017-12-29 11:43:49 +00:00
"net/http"
)
2023-12-06 12:11:55 +00:00
// Limiter defines an interface that implementers can use to rate limit I/O
// according to some policy defined and configured by the implementer.
type Limiter interface {
// Upstream returns a rate limited reader that is intended to be used in
// uploads.
Upstream(r io.Reader) io.Reader
2018-05-22 18:48:17 +00:00
// UpstreamWriter returns a rate limited writer that is intended to be used
// in uploads.
UpstreamWriter(w io.Writer) io.Writer
// Downstream returns a rate limited reader that is intended to be used
// for downloads.
Downstream(r io.Reader) io.Reader
2017-12-29 11:43:49 +00:00
// Downstream returns a rate limited reader that is intended to be used
// for downloads.
DownstreamWriter(r io.Writer) io.Writer
2017-12-29 11:43:49 +00:00
// Transport returns an http.RoundTripper limited with the limiter.
Transport(http.RoundTripper) http.RoundTripper
}