core/admission/admission.go
2023-10-26 22:20:46 +08:00

30 lines
586 B
Go

package admission
import "context"
type Options struct{}
type Option func(opts *Options)
type Admission interface {
Admit(ctx context.Context, addr string, opts ...Option) bool
}
type admissionGroup struct {
admissions []Admission
}
func AdmissionGroup(admissions ...Admission) Admission {
return &admissionGroup{
admissions: admissions,
}
}
func (p *admissionGroup) Admit(ctx context.Context, addr string, opts ...Option) bool {
for _, admission := range p.admissions {
if admission != nil && !admission.Admit(ctx, addr, opts...) {
return false
}
}
return true
}