1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package main
- import (
- "fmt"
- "os"
- "time"
- "git.wecise.com/wecise/odb-go/odbc"
- "git.wecise.com/wecise/odbtools/omtool"
- "github.com/wecisecode/util/cmap"
- )
- var mcfg, logger = odbc.SetDefaultAppName("odbtools")
- func main() {
- odbtools := NewODBTools()
- e := odbtools.Init()
- if e != nil {
- println(fmt.Sprint(e))
- os.Exit(1)
- return
- }
- e = odbtools.Run()
- if e != nil {
- println(fmt.Sprint(e))
- os.Exit(1)
- return
- }
- time.Sleep(1 * time.Second)
- }
- type ODBTools struct {
- tools cmap.ConcurrentMap[omtool.OMTool, bool]
- }
- func NewODBTools() *ODBTools {
- tools := cmap.NewSingle(map[omtool.OMTool]bool{
- // datasync.NewDataSync(): false,
- })
- return &ODBTools{
- tools: tools,
- }
- }
- func (ots *ODBTools) Init() error {
- for i := range ots.tools.IterBuffered() {
- e := i.Key.Init()
- if e != nil {
- if !odbc.NoConfError.Contains(e) {
- return e
- }
- ots.tools.Set(i.Key, false)
- } else {
- ots.tools.Set(i.Key, true)
- logger.Info(fmt.Sprintf("%T inited", i.Key))
- }
- }
- return nil
- }
- func (ots *ODBTools) Run() error {
- dones := map[omtool.OMTool]<-chan error{}
- for i := range ots.tools.IterBuffered() {
- configured := i.Val
- if configured {
- done := i.Key.Run()
- if done != nil {
- dones[i.Key] = done
- } else {
- logger.Info(fmt.Sprintf("%T not run", i.Key))
- }
- }
- }
- for len(dones) > 0 {
- for kt, done := range dones {
- select {
- case e := <-done:
- logger.Info(fmt.Sprintf("%T done", kt))
- if e != nil {
- logger.Error(e)
- }
- delete(dones, kt)
- default:
- }
- }
- time.Sleep(1 * time.Second)
- }
- return nil
- }
|