]> Sergey Matveev's repositories - btrtrc.git/blob - ratelimitreader.go
Fix not working import
[btrtrc.git] / ratelimitreader.go
1 package torrent
2
3 import (
4         "golang.org/x/net/context"
5         "io"
6         "time"
7
8         "golang.org/x/time/rate"
9 )
10
11 type rateLimitedReader struct {
12         l *rate.Limiter
13         r io.Reader
14 }
15
16 func (me rateLimitedReader) Read(b []byte) (n int, err error) {
17         if err := me.l.WaitN(context.Background(), 1); err != nil {
18                 panic(err)
19         }
20         n, err = me.r.Read(b)
21         if !me.l.ReserveN(time.Now(), n-1).OK() {
22                 panic(n - 1)
23         }
24         return
25 }