dimension_udp.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package dimension
  2. import (
  3. "encoding/json"
  4. log "github.com/donnie4w/go-logger/logger"
  5. mu "mfw/util"
  6. "net"
  7. qu "qfw/util"
  8. "sync"
  9. )
  10. var (
  11. udpclient mu.UdpClient
  12. udpLock sync.Mutex
  13. )
  14. func initDimensionUdpMsg() {
  15. port := ":1583"
  16. udpclient = mu.UdpClient{Local: port, BufSize: 1024}
  17. udpclient.Listen(processUdpMsg)
  18. log.Debug("监听~", port)
  19. }
  20. func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
  21. switch act {
  22. case mu.OP_TYPE_DATA:
  23. var mapInfo map[string]interface{}
  24. err := json.Unmarshal(data, &mapInfo)
  25. if err != nil {
  26. udpclient.WriteUdp([]byte("err:"+err.Error()), mu.OP_NOOP, ra)
  27. } else if mapInfo != nil {
  28. sid, eid := qu.ObjToString(mapInfo["gtid"]), qu.ObjToString(mapInfo["lteid"])
  29. stype := qu.ObjToString(mapInfo["stype"])
  30. if stype == "monitor" {
  31. log.Debug("收到监测......")
  32. key := qu.ObjToString(mapInfo["key"])
  33. udpclient.WriteUdp([]byte(key), mu.OP_NOOP, ra)
  34. return
  35. }
  36. if sid == "" || eid == "" {
  37. log.Debug("异常~", sid, "~", eid)
  38. } else {
  39. key := sid + "-" + eid + "-" + qu.ObjToString(mapInfo["stype"])
  40. udpclient.WriteUdp([]byte(key), mu.OP_NOOP, ra)
  41. udpLock.Lock()
  42. dealWithIncreaseCoverDepartProTag(sid, eid)
  43. udpLock.Unlock()
  44. }
  45. }
  46. case mu.OP_NOOP: //下个节点回应
  47. log.Debug("接收~", string(data))
  48. }
  49. }