core/admission/admission.go
2023-04-18 20:46:44 +08:00

27 lines
490 B
Go

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