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
| package collector
|
| import (
| "encoding/json"
|
| "plc-recorder/config"
| "plc-recorder/logger"
| "plc-recorder/msg"
| "plc-recorder/util"
| )
|
| func getDeviceList() ([]msg.PLCDevice, error) {
| responseBody, err := util.HttpPost(config.Options.ApsDeviceWebApi, nil)
| if err != nil {
| logger.Warn("get device list from aps error:%s", err.Error())
| return nil, err
| }
|
| var response msg.ApsDeviceApiResponse
| err = json.Unmarshal(responseBody, &response)
| if err != nil {
| logger.Warn("unmarshal aps response error:%s", err.Error())
| return nil, err
| }
|
| logger.Debug("get device list total:%d", response.Total)
|
| return response.Data, nil
| }
|
| // 设备信息发生改变时更新采集的任务, 删除, 修改, 或者重新启动
| func HandleDeviceUpdate(message []byte) error {
| var device msg.PLCDevice
|
| err := json.Unmarshal(message, &device)
| if err != nil {
| logger.Error("unmarshal device update msg error:%s", err.Error())
| return err
| }
|
| if task, ok := mapTask.Load(device.DeviceID); ok {
| // 存在的任务, 先停止掉, 然后重新开启一个
| task.(collectorProc).cancel()
| }
|
| // 判断是否是重新启动的状态, 启动一个新的任务
| if device.Status == 0 {
| addTask(&device)
| }
|
| return nil
| }
|
|