From 5dafbd6b419cfc436aece4ac8b5580532f12afea Mon Sep 17 00:00:00 2001
From: 554325746@qq.com <554325746@qq.com>
Date: 星期日, 16 六月 2019 13:41:50 +0800
Subject: [PATCH] release task

---
 camera/camera.go |   47 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/camera/camera.go b/camera/camera.go
index d4b3cce..6432434 100644
--- a/camera/camera.go
+++ b/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
 	}
 

--
Gitblit v1.8.0