/
device_service.go
122 lines (112 loc) · 4.13 KB
/
device_service.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package main
import (
log "zc-common-go/glog"
"zc-dm/device"
"zc-service-go"
)
type DeviceService struct {
zc.ZService
home *HomeManagerHandler
member *MemberManagerHandler
dev *DeviceManagerHandler
warehouse *DeviceWarehouseHandler
access *DeviceAccessPointHandler
}
func (this *DeviceService) Validate() bool {
return this.home != nil && this.member != nil && this.dev != nil &&
this.warehouse != nil && this.access != nil
}
func NewDeviceService(database string, config *zc.ZServiceConfig) *DeviceService {
const host string = "101.251.106.4:3306"
const user string = "root"
const password string = "123456"
store := device.NewDeviceStorage(host, user, password, database)
if store == nil {
log.Fatalln("device storage init failed")
return nil
}
home := NewHomeManagerHandler(device.NewHomeManager(store))
member := NewMemberManagerHandler(device.NewMemberManager(store))
dev := NewDeviceManagerHandler(device.NewDeviceManager(store), device.NewBindingManager(store))
warehouse := NewDeviceWarehouseHandler(device.NewDeviceWarehouse(store))
access := NewDeviceAccessPointHandler(device.NewAccessRouter(store))
service := &DeviceService{home: home, member: member, dev: dev, warehouse: warehouse, access: access}
if !service.Validate() {
log.Fatalln("service init failed")
return nil
}
service.Init("zc-dm", config)
// device ctrl access point handler
service.Handle("getapoint", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
access.handleGetAccessPoint(req, resp)
}))
// device warehouse handler
service.Handle("registdevice", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
warehouse.handleRegistDevice(req, resp)
}))
service.Handle("getpublickey", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
warehouse.handleGetPublicKey(req, resp)
}))
// home manager handler
service.Handle("listhomes", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
home.handleListHomes(req, resp)
}))
service.Handle("createhome", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
home.handleCreateHome(req, resp)
}))
service.Handle("modifyhome", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
home.handleModifyHome(req, resp)
}))
service.Handle("deletehome", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
home.handleDeleteHome(req, resp)
}))
service.Handle("frozenhome", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
home.handleFrozenHome(req, resp)
}))
// member manager handler
service.Handle("listmembers", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
member.handleListMembers(req, resp)
}))
service.Handle("addmember", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
member.handleAddMember(req, resp)
}))
service.Handle("deletemember", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
member.handleDeleteMember(req, resp)
}))
service.Handle("modifymember", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
member.handleModifyMember(req, resp)
}))
service.Handle("frozenmember", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
member.handleFrozenMember(req, resp)
}))
// device manager handler
service.Handle("listdevices", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
dev.handleListDevices(req, resp)
}))
service.Handle("binddevice", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
dev.handleBindDevice(req, resp)
}))
service.Handle("changedevice", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
dev.handleChangeDevice(req, resp)
}))
service.Handle("deletedevice", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
dev.handleDeleteDevice(req, resp)
}))
service.Handle("modifydevice", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
dev.handleModifyDevice(req, resp)
}))
service.Handle("frozendevice", zc.ZServiceHandler(func(req *zc.ZMsg, resp *zc.ZMsg) {
dev.handleFrozenDevice(req, resp)
}))
return service
}
func main() {
var serverConfig = &zc.ZServiceConfig{Port: "5354"}
server := NewDeviceService("device", serverConfig)
if server == nil {
log.Fatal("new device server failed, exit")
return
}
// TODO defer close all the connections
server.Start()
}