From 758b51660345cbba640ddccbd78b705d2131ec46 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Tue, 18 Dec 2018 21:15:32 -0800 Subject: [PATCH] mock: export ratelimiter as RateLimiter Technically a breaking change because I changed the constructor casing but nobody's using this outside of libp2p (yet), mostly because the type hasn't been exported. --- p2p/net/mock/mock_link.go | 4 ++-- p2p/net/mock/mock_test.go | 2 +- p2p/net/mock/ratelimiter.go | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/p2p/net/mock/mock_link.go b/p2p/net/mock/mock_link.go index 9c6049ac..d1236666 100644 --- a/p2p/net/mock/mock_link.go +++ b/p2p/net/mock/mock_link.go @@ -16,7 +16,7 @@ type link struct { mock *mocknet nets []*peernet opts LinkOptions - ratelimiter *ratelimiter + ratelimiter *RateLimiter // this could have addresses on both sides. sync.RWMutex @@ -25,7 +25,7 @@ type link struct { func newLink(mn *mocknet, opts LinkOptions) *link { l := &link{mock: mn, opts: opts, - ratelimiter: NewRatelimiter(opts.Bandwidth)} + ratelimiter: NewRateLimiter(opts.Bandwidth)} return l } diff --git a/p2p/net/mock/mock_test.go b/p2p/net/mock/mock_test.go index d6d3c726..ceeea38f 100644 --- a/p2p/net/mock/mock_test.go +++ b/p2p/net/mock/mock_test.go @@ -487,7 +487,7 @@ func TestAdding(t *testing.T) { } func TestRateLimiting(t *testing.T) { - rl := NewRatelimiter(10) + rl := NewRateLimiter(10) if !within(rl.Limit(10), time.Duration(float32(time.Second)), time.Millisecond/10) { t.Fail() diff --git a/p2p/net/mock/ratelimiter.go b/p2p/net/mock/ratelimiter.go index 0b21c9a4..d4e5797b 100644 --- a/p2p/net/mock/ratelimiter.go +++ b/p2p/net/mock/ratelimiter.go @@ -5,9 +5,9 @@ import ( "time" ) -// A ratelimiter is used by a link to determine how long to wait before sending +// A RateLimiter is used by a link to determine how long to wait before sending // data given a bandwidth cap. -type ratelimiter struct { +type RateLimiter struct { lock sync.Mutex bandwidth float64 // bytes per nanosecond allowance float64 // in bytes @@ -17,11 +17,11 @@ type ratelimiter struct { duration time.Duration // total delay introduced due to rate limiting } -// Creates a new ratelimiter with bandwidth (in bytes/sec) -func NewRatelimiter(bandwidth float64) *ratelimiter { +// Creates a new RateLimiter with bandwidth (in bytes/sec) +func NewRateLimiter(bandwidth float64) *RateLimiter { // convert bandwidth to bytes per nanosecond b := bandwidth / float64(time.Second) - return &ratelimiter{ + return &RateLimiter{ bandwidth: b, allowance: 0, maxAllowance: bandwidth, @@ -29,8 +29,8 @@ func NewRatelimiter(bandwidth float64) *ratelimiter { } } -// Changes bandwidth of a ratelimiter and resets its allowance -func (r *ratelimiter) UpdateBandwidth(bandwidth float64) { +// Changes bandwidth of a RateLimiter and resets its allowance +func (r *RateLimiter) UpdateBandwidth(bandwidth float64) { r.lock.Lock() defer r.lock.Unlock() // Convert bandwidth from bytes/second to bytes/nanosecond @@ -43,7 +43,7 @@ func (r *ratelimiter) UpdateBandwidth(bandwidth float64) { } // Returns how long to wait before sending data with length 'dataSize' bytes -func (r *ratelimiter) Limit(dataSize int) time.Duration { +func (r *RateLimiter) Limit(dataSize int) time.Duration { r.lock.Lock() defer r.lock.Unlock() // update time