Skip to content

Commit

Permalink
mock: export ratelimiter as RateLimiter
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Stebalien committed Dec 19, 2018
1 parent 894979f commit 758b516
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 11 deletions.
4 changes: 2 additions & 2 deletions p2p/net/mock/mock_link.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
}

Expand Down
2 changes: 1 addition & 1 deletion p2p/net/mock/mock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
16 changes: 8 additions & 8 deletions p2p/net/mock/ratelimiter.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -17,20 +17,20 @@ 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,
lastUpdate: time.Now(),
}
}

// 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
Expand All @@ -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
Expand Down

0 comments on commit 758b516

Please sign in to comment.