mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-03 22:45:13 +08:00
68 lines
1.2 KiB
Go
68 lines
1.2 KiB
Go
package service
|
|
|
|
import (
|
|
"github.com/duanhf2012/origin/v2/log"
|
|
"os"
|
|
)
|
|
|
|
//本地所有的service
|
|
var mapServiceName map[string]IService
|
|
var setupServiceList []IService
|
|
|
|
type RegRpcEventFunType func(serviceName string)
|
|
type RegDiscoveryServiceEventFunType func(serviceName string)
|
|
var RegRpcEventFun RegRpcEventFunType
|
|
var UnRegRpcEventFun RegRpcEventFunType
|
|
|
|
func init(){
|
|
mapServiceName = map[string]IService{}
|
|
setupServiceList = []IService{}
|
|
}
|
|
|
|
func Init() {
|
|
for _,s := range setupServiceList {
|
|
err := s.OnInit()
|
|
if err != nil {
|
|
log.Error("Failed to initialize "+s.GetName()+" service",log.ErrorAttr("err",err))
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
}
|
|
|
|
func Setup(s IService) bool {
|
|
_,ok := mapServiceName[s.GetName()]
|
|
if ok == true {
|
|
return false
|
|
}
|
|
|
|
mapServiceName[s.GetName()] = s
|
|
setupServiceList = append(setupServiceList, s)
|
|
return true
|
|
}
|
|
|
|
func GetService(serviceName string) IService {
|
|
s,ok := mapServiceName[serviceName]
|
|
if ok == false {
|
|
return nil
|
|
}
|
|
|
|
return s
|
|
}
|
|
|
|
func Start(){
|
|
for _,s := range setupServiceList {
|
|
s.Start()
|
|
}
|
|
}
|
|
|
|
func StopAllService(){
|
|
for i := len(setupServiceList) - 1; i >= 0; i-- {
|
|
setupServiceList[i].Stop()
|
|
}
|
|
}
|
|
|
|
func NotifyAllServiceRetire(){
|
|
for i := len(setupServiceList) - 1; i >= 0; i-- {
|
|
setupServiceList[i].SetRetire()
|
|
}
|
|
} |