| | |
| | | "gat1400Exchange/config" |
| | | "gat1400Exchange/pkg/logger" |
| | | "gat1400Exchange/models" |
| | | "gat1400Exchange/util" |
| | | |
| | | "github.com/hashicorp/golang-lru/v2/expirable" |
| | | ) |
| | |
| | | IpAddr string `json:"ip"` |
| | | } |
| | | |
| | | func reportDeviceInfo() error { |
| | | func DeviceInfoReportTask() error { |
| | | logger.Info("Start device info report task, server:%s.", config.ForwardConf.ReportServer) |
| | | |
| | | if config.ForwardConf.ReportServer == "" { |
| | | return errors.New("server addr is empty !") |
| | | return errors.New("Server addr is empty!") |
| | | } |
| | | |
| | | var d models.Device |
| | |
| | | |
| | | logger.Info("Report device info. %+v", dev) |
| | | |
| | | _, err = HttpPost(config.ForwardConf.ReportServer, nil, data) |
| | | _, err = util.HttpPost(config.ForwardConf.ReportServer, nil, data) |
| | | if err != nil { |
| | | return err |
| | | } |
| | |
| | | |
| | | func KeepDeviceAlive(id string) { |
| | | deviceAliveCache.Add(id, true) |
| | | } |
| | | |
| | | func DeviceInfoReportTask() { |
| | | interval := config.ForwardConf.ReportInterval |
| | | if interval == 0 { |
| | | interval = 10 |
| | | } |
| | | |
| | | logger.Info("start device info report task, server:%s interval:%d.", config.ForwardConf.ReportServer, interval) |
| | | |
| | | ticker := time.NewTicker(1 * time.Second) |
| | | for { |
| | | select { |
| | | case <-ticker.C: |
| | | err := reportDeviceInfo() |
| | | if err != nil { |
| | | logger.Warn(err.Error()) |
| | | } |
| | | |
| | | ticker.Reset(time.Duration(interval) * time.Second) |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | func HttpPost(url string, header map[string]string, data []byte) ([]byte, error) { |
| | | req, err := http.NewRequest(http.MethodPost, url, bytes.NewBuffer(data)) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | req.Header.Set("Content-Type", "applicaiton/json; charset=UTF-8") |
| | | if header != nil { |
| | | for k, v := range header { |
| | | req.Header.Set(k, v) |
| | | } |
| | | } |
| | | cli := &http.Client{} |
| | | resp, err := cli.Do(req) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | defer resp.Body.Close() |
| | | body, err := io.ReadAll(resp.Body) |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | | return body, nil |
| | | } |