| 1234567891011121314151617181920212223242526272829303132 |
- // Copyright (C) 2014 The Syncthing Authors.
- //
- // This Source Code Form is subject to the terms of the Mozilla Public
- // License, v. 2.0. If a copy of the MPL was not distributed with this file,
- // You can obtain one at http://mozilla.org/MPL/2.0/.
- package connections
- import (
- "io"
- "github.com/juju/ratelimit"
- )
- type LimitedWriter struct {
- writer io.Writer
- bucket *ratelimit.Bucket
- }
- func NewWriteLimiter(w io.Writer, b *ratelimit.Bucket) *LimitedWriter {
- return &LimitedWriter{
- writer: w,
- bucket: b,
- }
- }
- func (w *LimitedWriter) Write(buf []byte) (int, error) {
- if w.bucket != nil {
- w.bucket.Wait(int64(len(buf)))
- }
- return w.writer.Write(buf)
- }
|