panlei
2019-08-08 e5249a1d2c507ac51689214680c00fcd1b3ab2ef
main.go
@@ -5,8 +5,8 @@
   "basic.com/pubsub/protomsg.git"
   "basic.com/valib/deliver.git"
   "ruleprocess/insertdata"
   "ruleprocess/labelFilter"
   "ruleprocess/util"
   "time"
   //"bufio"
   //"bytes"
@@ -57,29 +57,41 @@
   var msg []byte
   var err error
   msgChan := make(chan []byte,100)
   for {
      select {
      // case <-ctx.Done():
      //    return
      default:
         msg, err = c.Recv()
         msgChan <- msg
         if err != nil {
            logger.Info("recv error : ", err)
            fmt.Println("recv error : ", err)
            continue
         } else {
            arg := ruleserver.SdkDatas{}
            //paramFormat(msg, &arg)
            m := paramFormat(msg, &arg)
            // 进行规则处理判断(打上规则的标签)
            ruleserver.Judge(&arg,&m) // 把sdkMessage传进去,方便缓存数据时拼出一个resultMag
            // 把arg里的打的标签拿出来给m再封装一层
            resultMsg := ruleserver.ResultMsg{SdkMessage: &m, RuleResult: arg.RuleResult}
            // 将打完标签的数据插入到ES
            insertdata.InsertToEs(resultMsg)
            //事件推送
            labelFilter.Judge(resultMsg)
            wg := sync.WaitGroup{}
            for msg := range msgChan {
               wg.Add(1)
               go func() {
                  logger.Debug("当前时间戳:",time.Now().Unix())
                  arg := ruleserver.SdkDatas{}
                  //paramFormat(msg, &arg)
                  start := time.Now()
                  m := paramFormat(msg, &arg)
                  // 进行规则处理判断(打上规则的标签)
                  ruleserver.Judge(&arg,&m) // 把sdkMessage传进去,方便缓存数据时拼出一个resultMag
                  // 把arg里的打的标签拿出来给m再封装一层
                  resultMsg := ruleserver.ResultMsg{SdkMessage: &m, RuleResult: arg.RuleResult}
                  logger.Debug("规则判断完所用时间:",time.Since(start))
                  // 将打完标签的数据插入到ES
                  insertdata.InsertToEs(resultMsg)
                  logger.Debug("插入完Es所用时间:",time.Since(start))
                  //事件推送
                  //go labelFilter.Judge(resultMsg)
                  wg.Done()
               }()
            }
         }
      }
   }
@@ -111,7 +123,6 @@
      panic("解析msg时出现错误")
   }
   logger.Info("接到数据,摄像机为:",m.Cid)
   // 先进行一下追踪
   //ruleserver.FaceIsSame(&m)
   args.CameraId = m.Cid
@@ -123,6 +134,7 @@
   }
   i := protomsg.Image{}
   err = proto.Unmarshal(bdata, &i)
   logger.Info("接到数据,摄像机为:",m.Cid,"图片的id为:",i.Id)
   //logger.Info("----------------看看有几个算法:",len(m.Tasklab.Sdkinfos))
   for _, sdkinfo := range m.Tasklab.Sdkinfos { // yolo算法
      if sdkinfo.Sdktype == "Yolo" {
@@ -130,12 +142,12 @@
         arg.TaskId = m.Tasklab.Taskid
         arg.IpcId = sdkinfo.Ipcid
         arg.IsYolo = true
         bdata, err := util.UnCompress(m.Data)
         if err != nil {
            panic("解压缩图片时出现错误")
         }
         i := protomsg.Image{}
         err = proto.Unmarshal(bdata, &i)
         //bdata, err := util.UnCompress(m.Data)
         //if err != nil {
         //   panic("解压缩图片时出现错误")
         //}
         //i := protomsg.Image{}
         //err = proto.Unmarshal(bdata, &i)
         arg.ImageWidth = int(i.Width)
         arg.ImageHeight = int(i.Height)
         // 暂时写死,sdk还没有这俩算法
@@ -171,12 +183,12 @@
         arg.TaskId = m.Tasklab.Taskid
         arg.IpcId = sdkinfo.Ipcid
         arg.IsYolo = false
         bdata, err := util.UnCompress(m.Data)
         if err != nil {
            panic("解压缩图片时出现错误")
         }
         i := protomsg.Image{}
         err = proto.Unmarshal(bdata, &i)
         //bdata, err := util.UnCompress(m.Data)
         //if err != nil {
         //   panic("解压缩图片时出现错误")
         //}
         //i := protomsg.Image{}
         //err = proto.Unmarshal(bdata, &i)
         arg.ImageWidth = int(i.Width)
         arg.ImageHeight = int(i.Height)
         // 暂时写死,sdk还没有这俩算法