modify policy interface
This commit is contained in:
parent
6bef89a47b
commit
4d30c6865a
|
@ -62,7 +62,7 @@ func newGroup1(driverName string, dataSourceNames string, policy ...Policy) (*En
|
||||||
s_count: len(engines[1:]),
|
s_count: len(engines[1:]),
|
||||||
policy: policy[0],
|
policy: policy[0],
|
||||||
}
|
}
|
||||||
eg.policy.SetEngineGroup(eg)
|
eg.policy.Init()
|
||||||
return eg, nil
|
return eg, nil
|
||||||
} else {
|
} else {
|
||||||
xPolicy := new(XormEngineGroupPolicy)
|
xPolicy := new(XormEngineGroupPolicy)
|
||||||
|
@ -73,7 +73,7 @@ func newGroup1(driverName string, dataSourceNames string, policy ...Policy) (*En
|
||||||
s_count: len(engines[1:]),
|
s_count: len(engines[1:]),
|
||||||
policy: xPolicy,
|
policy: xPolicy,
|
||||||
}
|
}
|
||||||
xPolicy.SetEngineGroup(eg)
|
xPolicy.Init()
|
||||||
return eg, nil
|
return eg, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ func newGroup2(Master *Engine, Slaves []*Engine, policy ...Policy) (*EngineGroup
|
||||||
s_count: len(Slaves),
|
s_count: len(Slaves),
|
||||||
policy: policy[0],
|
policy: policy[0],
|
||||||
}
|
}
|
||||||
eg.policy.SetEngineGroup(eg)
|
eg.policy.Init()
|
||||||
return eg, nil
|
return eg, nil
|
||||||
} else {
|
} else {
|
||||||
xPolicy := new(XormEngineGroupPolicy)
|
xPolicy := new(XormEngineGroupPolicy)
|
||||||
|
@ -102,7 +102,7 @@ func newGroup2(Master *Engine, Slaves []*Engine, policy ...Policy) (*EngineGroup
|
||||||
s_count: len(Slaves),
|
s_count: len(Slaves),
|
||||||
policy: xPolicy,
|
policy: xPolicy,
|
||||||
}
|
}
|
||||||
xPolicy.SetEngineGroup(eg)
|
xPolicy.Init()
|
||||||
return eg, nil
|
return eg, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ func (eg *EngineGroup) Slave() *Engine {
|
||||||
if eg.count == 1 {
|
if eg.count == 1 {
|
||||||
return eg.master
|
return eg.master
|
||||||
}
|
}
|
||||||
return eg.slaves[eg.policy.Slave()]
|
return eg.policy.Slave(eg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (eg *EngineGroup) Slaves() []*Engine {
|
func (eg *EngineGroup) Slaves() []*Engine {
|
||||||
|
|
|
@ -19,8 +19,8 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Policy interface {
|
type Policy interface {
|
||||||
Slave() int
|
Init()
|
||||||
SetEngineGroup(*EngineGroup)
|
Slave(*EngineGroup) *Engine
|
||||||
}
|
}
|
||||||
|
|
||||||
type XormEngineGroupPolicy struct {
|
type XormEngineGroupPolicy struct {
|
||||||
|
@ -30,9 +30,13 @@ type XormEngineGroupPolicy struct {
|
||||||
r *rand.Rand
|
r *rand.Rand
|
||||||
}
|
}
|
||||||
|
|
||||||
func (xgep *XormEngineGroupPolicy) SetEngineGroup(eg *EngineGroup) {
|
func (xgep *XormEngineGroupPolicy) Init() {
|
||||||
xgep.r = rand.New(rand.NewSource(time.Now().UnixNano()))
|
xgep.r = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (xgep *XormEngineGroupPolicy) Slave(eg *EngineGroup) *Engine {
|
||||||
xgep.eg = eg
|
xgep.eg = eg
|
||||||
|
return eg.slaves[xgep.slave()]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (xgep *XormEngineGroupPolicy) SetWeight() {
|
func (xgep *XormEngineGroupPolicy) SetWeight() {
|
||||||
|
@ -44,7 +48,7 @@ func (xgep *XormEngineGroupPolicy) SetWeight() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (xgep *XormEngineGroupPolicy) Slave() int {
|
func (xgep *XormEngineGroupPolicy) slave() int {
|
||||||
switch xgep.eg.p {
|
switch xgep.eg.p {
|
||||||
case ENGINE_GROUP_POLICY_RANDOM:
|
case ENGINE_GROUP_POLICY_RANDOM:
|
||||||
return xgep.Random()
|
return xgep.Random()
|
||||||
|
|
Loading…
Reference in New Issue