554325746@qq.com
2019-06-16 5dafbd6b419cfc436aece4ac8b5580532f12afea
camera/camera.go
@@ -12,7 +12,7 @@
   "context"
   "fmt"
   "sync"
   "time"
   //"time"
)
//var SocketManage = make(map[string]SocketContext)
@@ -37,6 +37,7 @@
   }
   go CreateCamera(Initchannel)
   go AutoDelCamera(util.Cameraflag)
   for _, cam := range util.CameraIds {
      Initchannel <- cam.Id
@@ -57,6 +58,45 @@
         go func(cid string, sock SocketContext) {
            Recv(cid, sock)
         }(id, socketlisten)
      }
   }
}
//动态处理
func AutoDelCamera(cameraflag chan bool) {
   for _ = range cameraflag {
      fmt.Println("test autodelcameraflag")
      var oldcamera []string
      SocketManage.Range(func(k, v interface{}) bool {
         if str, ok := k.(string); ok {
            oldcamera = append(oldcamera, str)
         }
         return true
      })
      var newcamera []string
      for _, value := range util.CameraIds {
         newcamera = append(newcamera, value.Id)
      }
      cameraChanDel := util.Difference(oldcamera, newcamera)
      fmt.Println(cameraChanDel)
      for key, op := range cameraChanDel {
         if op == "add" {
            Initchannel <- key
         } else {
            if sock, ok := SocketManage.Load(key); ok {
               if socket, sok := sock.(SocketContext); sok {
                  socket.Cancel()
                  SocketManage.Delete(key)
               }
            }
            fmt.Println("删除camera server : ", key)
         }
      }
   }
}
@@ -93,9 +133,8 @@
         } else {
            fmt.Println()
            fmt.Println("============== one msg input ==========")
            fmt.Println("cameraid: ", cameraid, len(msg))
            for _, taskid := range GetAlltask(cameraid) {
               time.Sleep(5 * time.Second)
               //time.Sleep(5 * time.Second)
               fmt.Println("cameraid: ", cameraid, " taskid: ", taskid)
               Taskdolist(cameraid, taskid, msg)
            }
@@ -122,7 +161,7 @@
   //  数据加工(打标签)
   sdkmsg := sdk.SdkData(cid, taskid, data)
   if sdkmsg.Tasklab == nil {
      fmt.Println("cid:%s 没有任务%s", cid, taskid)
      fmt.Printf("cid:%s 没有任务%s\n", cid, taskid)
      return
   }