diff --git a/go.mod b/go.mod index 49e4444..1b638d6 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,8 @@ go 1.12 require ( github.com/boltdb/bolt v1.3.1 - github.com/cbeuw/ratelimit v1.1.0 github.com/gorilla/mux v1.7.3 + github.com/juju/ratelimit v1.0.1 github.com/kr/pretty v0.1.0 // indirect github.com/sirupsen/logrus v1.4.2 golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4 diff --git a/internal/multiplex/qos.go b/internal/multiplex/qos.go index 355c58e..935a8c9 100644 --- a/internal/multiplex/qos.go +++ b/internal/multiplex/qos.go @@ -3,7 +3,7 @@ package multiplex import ( "sync/atomic" - "github.com/cbeuw/ratelimit" + "github.com/juju/ratelimit" ) // Valve needs to be universal, across all sessions that belong to a user @@ -14,8 +14,8 @@ type LimitedValve struct { // rx is from client to server, tx is from server to client // DO NOT use terms up or down as this is used in usermanager // for bandwidth limiting - rxtb ratelimit.Bucket - txtb ratelimit.Bucket + rxtb *ratelimit.Bucket + txtb *ratelimit.Bucket rx *int64 tx *int64 @@ -26,8 +26,8 @@ type UnlimitedValve struct{} func MakeValve(rxRate, txRate int64) *LimitedValve { var rx, tx int64 v := &LimitedValve{ - rxtb: ratelimit.NewLimitedBucketWithRate(float64(rxRate), rxRate), - txtb: ratelimit.NewLimitedBucketWithRate(float64(txRate), txRate), + rxtb: ratelimit.NewBucketWithRate(float64(rxRate), rxRate), + txtb: ratelimit.NewBucketWithRate(float64(txRate), txRate), rx: &rx, tx: &tx, } diff --git a/internal/multiplex/stream.go b/internal/multiplex/stream.go index f9f7c3c..83f3efd 100644 --- a/internal/multiplex/stream.go +++ b/internal/multiplex/stream.go @@ -69,6 +69,7 @@ func makeStream(sesh *Session, id uint32, assignedConnId uint32) *Stream { func (s *Stream) isClosed() bool { return atomic.LoadUint32(&s.closed) == 1 } func (s *Stream) writeFrame(frame *Frame) { + // TODO: refactor this through an interface if s.session.Unordered { s.buf.Write(frame.Payload) } else {