add NewGroup function
This commit is contained in:
parent
e60236dae9
commit
ab0e589093
|
@ -8,6 +8,7 @@ import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"io"
|
"io"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"strings"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -20,6 +21,36 @@ type GroupEngine struct {
|
||||||
count uint64
|
count uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewGroupEngine(driverName string, dataSourceNames string) (*GroupEngine, error) {
|
||||||
|
conns := strings.Split(dataSourceNames, ";")
|
||||||
|
engines := make([]*Engine, len(conns))
|
||||||
|
for i, _ := range conns {
|
||||||
|
engine, err := NewEngine(driverName, conns[i])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
engines[i] = engine
|
||||||
|
}
|
||||||
|
ge := &GroupEngine{
|
||||||
|
engines: engines,
|
||||||
|
count: uint64(len(engines)),
|
||||||
|
}
|
||||||
|
return ge, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewGroup(Master *Engine, Slaves []*Engine, policy int) (*GroupEngine, error) {
|
||||||
|
engines := make([]*Engine, 0)
|
||||||
|
engines = append(engines, Master)
|
||||||
|
for i, _ := range Slaves {
|
||||||
|
engines = append(engines, Slaves[i])
|
||||||
|
}
|
||||||
|
ge := &GroupEngine{
|
||||||
|
engines: engines,
|
||||||
|
count: uint64(len(engines)),
|
||||||
|
}
|
||||||
|
return ge, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (ge *GroupEngine) Master() *Engine {
|
func (ge *GroupEngine) Master() *Engine {
|
||||||
return ge.engines[0]
|
return ge.engines[0]
|
||||||
}
|
}
|
||||||
|
@ -36,6 +67,13 @@ func (ge *GroupEngine) GetEngine(i int) *Engine {
|
||||||
return ge.engines[i]
|
return ge.engines[i]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ge *GroupEngine) GetSlaves() []*Engine {
|
||||||
|
if len(ge.engines) == 1 {
|
||||||
|
return ge.engines
|
||||||
|
}
|
||||||
|
return ge.engines[1:]
|
||||||
|
}
|
||||||
|
|
||||||
func (ge *GroupEngine) slave(n int) int {
|
func (ge *GroupEngine) slave(n int) int {
|
||||||
if n <= 1 {
|
if n <= 1 {
|
||||||
return 0
|
return 0
|
||||||
|
|
17
xorm.go
17
xorm.go
|
@ -9,7 +9,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -55,22 +54,6 @@ func init() {
|
||||||
regDrvsNDialects()
|
regDrvsNDialects()
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewGroupEngine(driverName string, dataSourceNames string) (*GroupEngine, error) {
|
|
||||||
conns := strings.Split(dataSourceNames, ";")
|
|
||||||
engines := make([]*Engine, len(conns))
|
|
||||||
for i, _ := range conns {
|
|
||||||
engine, err := NewEngine(driverName, conns[i])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
engines[i] = engine
|
|
||||||
}
|
|
||||||
ge := &GroupEngine{
|
|
||||||
engines: engines,
|
|
||||||
}
|
|
||||||
return ge, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewEngine new a db manager according to the parameter. Currently support four
|
// NewEngine new a db manager according to the parameter. Currently support four
|
||||||
// drivers
|
// drivers
|
||||||
func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
|
func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
|
||||||
|
|
Loading…
Reference in New Issue