mirror of
https://github.com/go-kratos/kratos.git
synced 2025-01-26 03:52:12 +02:00
41 lines
653 B
Go
41 lines
653 B
Go
|
package ratelimit
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
)
|
||
|
|
||
|
// Op operations type.
|
||
|
type Op int
|
||
|
|
||
|
const (
|
||
|
// Success opertion type: success
|
||
|
Success Op = iota
|
||
|
// Ignore opertion type: ignore
|
||
|
Ignore
|
||
|
// Drop opertion type: drop
|
||
|
Drop
|
||
|
)
|
||
|
|
||
|
type allowOptions struct{}
|
||
|
|
||
|
// AllowOptions allow options.
|
||
|
type AllowOption interface {
|
||
|
Apply(*allowOptions)
|
||
|
}
|
||
|
|
||
|
// DoneInfo done info.
|
||
|
type DoneInfo struct {
|
||
|
Err error
|
||
|
Op Op
|
||
|
}
|
||
|
|
||
|
// DefaultAllowOpts returns the default allow options.
|
||
|
func DefaultAllowOpts() allowOptions {
|
||
|
return allowOptions{}
|
||
|
}
|
||
|
|
||
|
// Limiter limit interface.
|
||
|
type Limiter interface {
|
||
|
Allow(ctx context.Context, opts ...AllowOption) (func(info DoneInfo), error)
|
||
|
}
|