package singleton

import (
	"sync"

	"golang.org/x/time/rate"
)

type simpleLimiter struct {
	Limiter *rate.Limiter
}

var simpleLimiterObj *simpleLimiter
var once sync.Once

func GetLimiterSingleton() *simpleLimiter {
	once.Do(func() {

		/*
			2: qps  in  second in  one  node
			1: token burst size
		*/

		//limiter := rate.NewLimiter(rate.Every(time.Millisecond*2), 20)
		limiter := rate.NewLimiter(2, 1)
		simpleLimiterObj = &simpleLimiter{limiter}
	})
	return simpleLimiterObj
}
