initial import

This commit is contained in:
kevin
2020-07-26 17:09:05 +08:00
commit 7e3a369a8f
647 changed files with 54754 additions and 0 deletions

36
core/load/sheddergroup.go Normal file
View File

@@ -0,0 +1,36 @@
package load
import (
"io"
"zero/core/syncx"
)
type ShedderGroup struct {
options []ShedderOption
manager *syncx.ResourceManager
}
func NewShedderGroup(opts ...ShedderOption) *ShedderGroup {
return &ShedderGroup{
options: opts,
manager: syncx.NewResourceManager(),
}
}
func (g *ShedderGroup) GetShedder(key string) Shedder {
shedder, _ := g.manager.GetResource(key, func() (closer io.Closer, e error) {
return nopCloser{
Shedder: NewAdaptiveShedder(g.options...),
}, nil
})
return shedder.(Shedder)
}
type nopCloser struct {
Shedder
}
func (c nopCloser) Close() error {
return nil
}