/
servicemanager.go
49 lines (39 loc) · 975 Bytes
/
servicemanager.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
package skynet
import (
"github.com/skynetservices/skynet2/log"
)
const (
_ = iota
InstanceAdded
InstanceRemoved
InstanceUpdated
)
type InstanceNotification struct {
Type int
Service ServiceInfo
}
type ServiceManager interface {
Add(s ServiceInfo) error
Update(s ServiceInfo) error
Remove(s ServiceInfo) error
Register(uuid string) error
Unregister(uuid string) error
Shutdown() error
// Discovery
ListHosts(c CriteriaMatcher) ([]string, error)
ListRegions(c CriteriaMatcher) ([]string, error)
ListServices(c CriteriaMatcher) ([]string, error)
ListVersions(c CriteriaMatcher) ([]string, error)
ListInstances(c CriteriaMatcher) ([]ServiceInfo, error)
Watch(criteria CriteriaMatcher, c chan<- InstanceNotification) []ServiceInfo
}
var manager ServiceManager
func SetServiceManager(sm ServiceManager) {
manager = sm
}
func GetServiceManager() ServiceManager {
if manager == nil {
log.Fatal("No ServiceManager provided")
}
return manager
}