initial import
This commit is contained in:
36
core/load/sheddergroup.go
Normal file
36
core/load/sheddergroup.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user