Skip to content

Commit cb77298

Browse files
committed
Rewrite rate
1 parent c320297 commit cb77298

File tree

9 files changed

+74
-1097
lines changed

9 files changed

+74
-1097
lines changed

cmd/daze/main.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"os"
1212
"path/filepath"
1313
"strings"
14+
"time"
1415

1516
"github.com/mohanson/daze"
1617
"github.com/mohanson/daze/lib/doa"
@@ -95,7 +96,7 @@ func main() {
9596
if *flLimits != "" {
9697
n := daze.SizeParser(*flLimits)
9798
doa.Doa(n <= math.MaxInt)
98-
server.Limits = rate.NewLimiter(rate.Limit(n), int(n))
99+
server.Limits = rate.NewLimits(n, time.Second)
99100
}
100101
defer server.Close()
101102
doa.Nil(server.Run())
@@ -107,7 +108,7 @@ func main() {
107108
if *flLimits != "" {
108109
n := daze.SizeParser(*flLimits)
109110
doa.Doa(n <= math.MaxInt)
110-
server.Limits = rate.NewLimiter(rate.Limit(n), int(n))
111+
server.Limits = rate.NewLimits(n, time.Second)
111112
}
112113
defer server.Close()
113114
doa.Nil(server.Run())
@@ -116,7 +117,7 @@ func main() {
116117
if *flLimits != "" {
117118
n := daze.SizeParser(*flLimits)
118119
doa.Doa(n <= math.MaxInt)
119-
server.Limits = rate.NewLimiter(rate.Limit(n), int(n))
120+
server.Limits = rate.NewLimits(n, time.Second)
120121
}
121122
defer server.Close()
122123
doa.Nil(server.Run())
@@ -125,7 +126,7 @@ func main() {
125126
if *flLimits != "" {
126127
n := daze.SizeParser(*flLimits)
127128
doa.Doa(n <= math.MaxInt)
128-
server.Limits = rate.NewLimiter(rate.Limit(n), int(n))
129+
server.Limits = rate.NewLimits(n, time.Second)
129130
}
130131
defer server.Close()
131132
doa.Nil(server.Run())
@@ -177,7 +178,7 @@ func main() {
177178
if *flLimits != "" {
178179
n := daze.SizeParser(*flLimits)
179180
doa.Doa(n <= math.MaxInt)
180-
locale.Limits = rate.NewLimiter(rate.Limit(n), int(n))
181+
locale.Limits = rate.NewLimits(n, time.Second)
181182
}
182183
defer locale.Close()
183184
doa.Nil(locale.Run())
@@ -191,7 +192,7 @@ func main() {
191192
if *flLimits != "" {
192193
n := daze.SizeParser(*flLimits)
193194
doa.Doa(n <= math.MaxInt)
194-
locale.Limits = rate.NewLimiter(rate.Limit(n), int(n))
195+
locale.Limits = rate.NewLimits(n, time.Second)
195196
}
196197
defer locale.Close()
197198
doa.Nil(locale.Run())
@@ -206,7 +207,7 @@ func main() {
206207
if *flLimits != "" {
207208
n := daze.SizeParser(*flLimits)
208209
doa.Doa(n <= math.MaxInt)
209-
locale.Limits = rate.NewLimiter(rate.Limit(n), int(n))
210+
locale.Limits = rate.NewLimits(n, time.Second)
210211
}
211212
defer locale.Close()
212213
doa.Nil(locale.Run())
@@ -215,7 +216,7 @@ func main() {
215216
if *flLimits != "" {
216217
n := daze.SizeParser(*flLimits)
217218
doa.Doa(n <= math.MaxInt)
218-
client.Limits = rate.NewLimiter(rate.Limit(n), int(n))
219+
client.Limits = rate.NewLimits(n, time.Second)
219220
}
220221
defer client.Close()
221222
doa.Nil(client.Run())

daze.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ func (d *Direct) Dial(ctx *Context, network string, address string) (io.ReadWrit
192192
type Locale struct {
193193
Closer io.Closer
194194
Dialer Dialer
195-
Limits *rate.Limiter
195+
Limits *rate.Limits
196196
Listen string
197197
}
198198

@@ -627,7 +627,7 @@ func (l *Locale) Run() error {
627627
func NewLocale(listen string, dialer Dialer) *Locale {
628628
return &Locale{
629629
Dialer: dialer,
630-
Limits: rate.NewLimiter(rate.Inf, 0),
630+
Limits: rate.NewLimits(math.MaxUint64, time.Second),
631631
Listen: listen,
632632
}
633633
}
@@ -1082,7 +1082,7 @@ func (r *RandomReader) Read(p []byte) (int, error) {
10821082
// RateConn wraps a net.Conn with a per-conn and a rate limiter.
10831083
type RateConn struct {
10841084
Conn io.ReadWriteCloser
1085-
Rate *rate.Limiter
1085+
Rate *rate.Limits
10861086
}
10871087

10881088
// Close closes the connection.
@@ -1093,14 +1093,14 @@ func (r *RateConn) Close() error {
10931093
// Read reads up to len(p) bytes into p.
10941094
func (r *RateConn) Read(p []byte) (int, error) {
10951095
n, err := r.Conn.Read(p)
1096-
r.Rate.WaitN(context.Background(), n)
1096+
r.Rate.Wait(uint64(n))
10971097
return n, err
10981098
}
10991099

11001100
// Write writes len(p) bytes from p to the underlying data stream.
11011101
func (r *RateConn) Write(p []byte) (int, error) {
11021102
n, err := r.Conn.Write(p)
1103-
r.Rate.WaitN(context.Background(), n)
1103+
r.Rate.Wait(uint64(n))
11041104
return n, err
11051105
}
11061106

lib/rate/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Rate
2+
3+
Package rate provides a rate limiter.

0 commit comments

Comments
 (0)