diff --git a/internal/internal.go b/internal/internal.go new file mode 100644 index 0000000..7ea3ce4 --- /dev/null +++ b/internal/internal.go @@ -0,0 +1,8 @@ +package internal + +import "google.golang.org/grpc/balancer" + +var ( + // EmptyDoneFunc is a empty done function + EmptyDoneFunc = func(balancer.DoneInfo) {} +) diff --git a/p2c/least_loaded.go b/p2c/least_loaded.go index b6a825f..3084542 100644 --- a/p2c/least_loaded.go +++ b/p2c/least_loaded.go @@ -7,6 +7,7 @@ import ( "time" "github.com/hnlq715/go-loadbalance" + "github.com/hnlq715/go-loadbalance/internal" "google.golang.org/grpc/balancer" ) @@ -42,7 +43,7 @@ func (p *leastLoaded) Next() (interface{}, func(balancer.DoneInfo)) { switch len(p.items) { case 0: - return nil, func(balancer.DoneInfo) {} + return nil, internal.EmptyDoneFunc case 1: sc = p.items[0] default: diff --git a/p2c/pewma.go b/p2c/pewma.go index 17e33b7..f050f2c 100644 --- a/p2c/pewma.go +++ b/p2c/pewma.go @@ -8,6 +8,7 @@ import ( "time" "github.com/hnlq715/go-loadbalance" + "github.com/hnlq715/go-loadbalance/internal" "google.golang.org/grpc/balancer" ) @@ -88,7 +89,7 @@ func (p *pewma) Next() (interface{}, func(balancer.DoneInfo)) { switch len(p.items) { case 0: - return nil, func(balancer.DoneInfo) {} + return nil, internal.EmptyDoneFunc case 1: sc = p.items[0] default: diff --git a/roundrobin/smooth_weighted.go b/roundrobin/smooth_weighted.go index f5edde9..573f41d 100644 --- a/roundrobin/smooth_weighted.go +++ b/roundrobin/smooth_weighted.go @@ -4,6 +4,7 @@ import ( "math" "github.com/hnlq715/go-loadbalance" + "github.com/hnlq715/go-loadbalance/internal" "google.golang.org/grpc/balancer" ) @@ -51,14 +52,14 @@ func (w *smoothRoundrobin) Reset() { // Next returns next selected server. func (w *smoothRoundrobin) Next() (interface{}, func(balancer.DoneInfo)) { if w.n == 0 { - return nil, func(balancer.DoneInfo) {} + return nil, internal.EmptyDoneFunc } if w.n == 1 { - return w.items[0].Item, func(balancer.DoneInfo) {} + return w.items[0].Item, internal.EmptyDoneFunc } - return nextSmoothWeighted(w.items).Item, func(balancer.DoneInfo) {} + return nextSmoothWeighted(w.items).Item, internal.EmptyDoneFunc } // nextSmoothWeighted selects the best node through the smooth weighted roundrobin . diff --git a/roundrobin/smooth_weighted_test.go b/roundrobin/smooth_weighted_test.go index 47824ce..26523d4 100644 --- a/roundrobin/smooth_weighted_test.go +++ b/roundrobin/smooth_weighted_test.go @@ -4,13 +4,15 @@ import ( "testing" "github.com/stretchr/testify/assert" + "google.golang.org/grpc/balancer" ) func TestSW_Next(t *testing.T) { w := NewSmoothRoundrobin() - s, _ := w.Next() + s, done := w.Next() assert.Nil(t, s) + done(balancer.DoneInfo{}) w.Add("server1", 5) s, _ = w.Next()