log
parent
42b2344fef
commit
2d18a6cdbe
|
|
@ -19,7 +19,7 @@ func NewConfig() *Config {
|
||||||
as := args.NewArgSet()
|
as := args.NewArgSet()
|
||||||
|
|
||||||
as.Append(args.INT, "p", "port to listen on", 61113)
|
as.Append(args.INT, "p", "port to listen on", 61113)
|
||||||
as.Append(args.INT, "kbps", "port to listen on", 61113)
|
as.Append(args.INT, "kbps", "kilobytes per sec limit", -1)
|
||||||
as.Append(args.BOOL, "tls-insecure", "permit tls insecure", false)
|
as.Append(args.BOOL, "tls-insecure", "permit tls insecure", false)
|
||||||
as.Append(args.DURATION, "t", "timeout", time.Minute)
|
as.Append(args.DURATION, "t", "timeout", time.Minute)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ package main
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
)
|
)
|
||||||
|
|
@ -15,12 +17,14 @@ type throttledWriter struct {
|
||||||
|
|
||||||
func (tw throttledWriter) Write(b []byte) (int, error) {
|
func (tw throttledWriter) Write(b []byte) (int, error) {
|
||||||
if tw.limiter != nil {
|
if tw.limiter != nil {
|
||||||
|
start := time.Now()
|
||||||
if block := tw.limiter.Burst(); len(b) > block {
|
if block := tw.limiter.Burst(); len(b) > block {
|
||||||
b = b[:block]
|
b = b[:block]
|
||||||
}
|
}
|
||||||
if err := tw.limiter.WaitN(tw.ctx, len(b)); err != nil {
|
if err := tw.limiter.WaitN(tw.ctx, len(b)); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
log.Printf("limited %v bytes for %v", len(b), time.Since(start))
|
||||||
}
|
}
|
||||||
return tw.w.Write(b)
|
return tw.w.Write(b)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue