代码拉取完成,页面将自动刷新
package cluster
import "sync"
// EnginePriorities is exported
type EnginePriorities struct {
sync.RWMutex
Engines map[string]*Engine
}
// NewEnginePriorities is exported
func NewEnginePriorities(metaData *MetaData, engines []*Engine) *EnginePriorities {
enginePriorities := &EnginePriorities{
Engines: make(map[string]*Engine),
}
for _, baseConfig := range metaData.BaseConfigs {
for _, engine := range engines {
if engine.IsHealthy() && engine.HasContainer(baseConfig.ID) {
enginePriorities.Add(baseConfig.ID, engine)
break
}
}
}
return enginePriorities
}
// EngineStrings is exported
func (priorities *EnginePriorities) EngineStrings() []string {
engines := []string{}
priorities.RLock()
defer priorities.RUnlock()
for _, engine := range priorities.Engines {
engines = append(engines, engine.IP)
}
return engines
}
// Select is exported
func (priorities *EnginePriorities) Select() *Engine {
var engine *Engine
priorities.Lock()
defer priorities.Unlock()
if len(priorities.Engines) == 0 {
return nil
}
for containerid, e := range priorities.Engines {
engine = e
delete(priorities.Engines, containerid)
break
}
return engine
}
// Size is exported
func (priorities *EnginePriorities) Size() int {
size := 0
priorities.RLock()
size = len(priorities.Engines)
priorities.RUnlock()
return size
}
// Add is exported
func (priorities *EnginePriorities) Add(containerid string, engine *Engine) {
priorities.Lock()
if _, ret := priorities.Engines[containerid]; !ret {
priorities.Engines[containerid] = engine
}
priorities.Unlock()
}
// Remove is exported
func (priorities *EnginePriorities) Remove(containerid string) {
priorities.Lock()
delete(priorities.Engines, containerid)
priorities.Unlock()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。