-
Notifications
You must be signed in to change notification settings - Fork 0
/
servicemgr.go
62 lines (50 loc) · 1.22 KB
/
servicemgr.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package service
import "errors"
//本地所有的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
var RegDiscoveryServiceEventFun RegDiscoveryServiceEventFunType
var UnRegDiscoveryServiceEventFun RegDiscoveryServiceEventFunType
func init(){
mapServiceName = map[string]IService{}
setupServiceList = []IService{}
}
func Init() {
for _,s := range setupServiceList {
err := s.OnInit()
if err != nil {
errs := errors.New("Failed to initialize "+s.GetName()+" service:"+err.Error())
panic(errs)
}
}
}
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()
}
}