1package ratelimit_test
2
3import (
4	"github.com/grpc-ecosystem/go-grpc-middleware"
5	"github.com/grpc-ecosystem/go-grpc-middleware/ratelimit"
6	"google.golang.org/grpc"
7)
8
9// alwaysPassLimiter is an example limiter which implements Limiter interface.
10// It does not limit any request because Limit function always returns false.
11type alwaysPassLimiter struct{}
12
13func (*alwaysPassLimiter) Limit() bool {
14	return false
15}
16
17// Simple example of server initialization code.
18func Example() {
19	// Create unary/stream rateLimiters, based on token bucket here.
20	// You can implement your own ratelimiter for the interface.
21	limiter := &alwaysPassLimiter{}
22	_ = grpc.NewServer(
23		grpc_middleware.WithUnaryServerChain(
24			ratelimit.UnaryServerInterceptor(limiter),
25		),
26		grpc_middleware.WithStreamServerChain(
27			ratelimit.StreamServerInterceptor(limiter),
28		),
29	)
30}
31