From 9cb979b5ab6df03bc64b09fb4a722bab8557f4bc Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 05 十二月 2019 11:13:06 +0800
Subject: [PATCH] add file analysis

---
 .gitignore       |    2 +
 go.sum           |   18 ++++++---
 go.mod           |   11 +++--
 util/sqlite.go   |   15 ++++++-
 util/util.go     |    4 ++
 camera/camera.go |   46 ++++++++++++++++++++++
 6 files changed, 82 insertions(+), 14 deletions(-)

diff --git a/.gitignore b/.gitignore
index a9bf723..9898cd6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,3 +24,5 @@
 
 taskpubsub
 *.log*
+.idea
+.vscode
diff --git a/camera/camera.go b/camera/camera.go
index 81bc720..5c38d6e 100644
--- a/camera/camera.go
+++ b/camera/camera.go
@@ -1,6 +1,7 @@
 package camera
 
 import (
+	"strings"
 	"taskpubsub/sdk"
 	"taskpubsub/util"
 
@@ -43,10 +44,20 @@
 		createCameraRecvServerAndListen(cam.Id)
 	}
 
+	//鏂囦欢鍒濆鍖�
+	for _,f := range util.FileArr {
+		logger.Info(f)
+	}
+	for _,f :=range util.FileArr {
+		createCameraRecvServerAndListen(f.Id)
+	}
+
 	// 鎵嬪姩杈撳叆鐨勪富棰�
 	initInnerTopic()
 
 	go autoUpdateCamera(util.Cameraflag)
+
+	go autoUpdateFiles(util.Fileflag)
 }
 
 // camera 鎺ュ彈鏁版嵁
@@ -89,7 +100,9 @@
 		var oldcameras []string
 
 		for key := range SocketManage {
-			oldcameras = append(oldcameras, key)
+			if !strings.HasPrefix(key,util.File_Video_Id_Pre) && !strings.HasPrefix(key,util.File_Audio_Id_Pre) && !strings.HasPrefix(key,util.File_Img_Id_Pre){
+				oldcameras = append(oldcameras, key)
+			}
 		}
 
 		var newcameras []string
@@ -115,6 +128,37 @@
 	}
 }
 
+//鍔ㄦ�佸鐞嗘枃浠�
+func autoUpdateFiles(fileflag chan bool) {
+
+	for _ = range fileflag {
+		logger.Info("do auto del fileflag")
+		var oldIds []string
+
+		for key := range SocketManage {
+			if strings.HasPrefix(key,util.File_Video_Id_Pre) || strings.HasPrefix(key,util.File_Audio_Id_Pre) || strings.HasPrefix(key,util.File_Img_Id_Pre){
+				oldIds = append(oldIds, key)
+			}
+		}
+
+		var newIds []string
+		for _, f := range util.FileArr {
+			newIds = append(newIds, f.Id)
+		}
+
+		fileListUpdate := util.Difference(oldIds, newIds)
+		logger.Info(fileListUpdate)
+
+		for key, op := range fileListUpdate {
+			if op == "add" {
+				createCameraRecvServerAndListen(key)
+			} else {
+				deleteCameraRecvServer(key)
+			}
+		}
+	}
+}
+
 func Recv(socket util.SocketContext) {
 
 	tryCount := 0
diff --git a/go.mod b/go.mod
index e289dee..186c31d 100644
--- a/go.mod
+++ b/go.mod
@@ -3,12 +3,13 @@
 go 1.12
 
 require (
-	basic.com/dbapi.git v0.0.0-20190831100542-bc0c5d2266dd
-	basic.com/pubsub/protomsg.git v0.0.0-20190905061607-7b96dafe8f99
-	basic.com/valib/deliver.git v0.0.0-20190927081905-2d390df9ede3
+	basic.com/dbapi.git v0.0.0-20191204094909-66f2832e579e // indirect
+	basic.com/pubsub/protomsg.git v0.0.0-20191204083653-a32445f65a09 // indirect
+	basic.com/valib/deliver.git v0.0.0-20190927081905-2d390df9ede3 // indirect
 	basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28
-	basic.com/valib/logger.git v0.0.0-20190904090733-b737ad2f8f18
+	basic.com/valib/logger.git v0.0.0-20190928113028-4907b08c4159 // indirect
 	basic.com/valib/shm.git v0.0.0-20191029034255-156e610f9bca // indirect
+	github.com/Microsoft/go-winio v0.4.14 // indirect
 	github.com/ajg/form v1.5.1 // indirect
 	github.com/gogo/protobuf v1.2.1
 	github.com/golang/protobuf v1.3.1
@@ -16,7 +17,7 @@
 	github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a
 	github.com/spf13/viper v1.4.0
 	golang.org/x/net v0.0.0-20190522155817-f3200d17e092
-	golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a
+	golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b
 	google.golang.org/grpc v1.23.0 // indirect
 	nanomsg.org/go-mangos v1.4.0
 )
diff --git a/go.sum b/go.sum
index 193a60f..ffc0ef1 100644
--- a/go.sum
+++ b/go.sum
@@ -1,17 +1,19 @@
-basic.com/dbapi.git v0.0.0-20190831100542-bc0c5d2266dd h1:8Q5PUZqdRvyXZ6aTOaHP6ge8Ir2Qs/eD0r8Sv8P/8p4=
-basic.com/dbapi.git v0.0.0-20190831100542-bc0c5d2266dd/go.mod h1:eDXPnxaz6jZPDvBSk7ya7oSASWPCuUEgRTJCjsfKt/Q=
-basic.com/pubsub/protomsg.git v0.0.0-20190905061607-7b96dafe8f99 h1:YSmWZPp/mHoq+/L5d0iTsqjiCcVwZqEQRQAXxQFSbvY=
-basic.com/pubsub/protomsg.git v0.0.0-20190905061607-7b96dafe8f99/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU=
+basic.com/dbapi.git v0.0.0-20191204094909-66f2832e579e h1:z4Q3H6oQVfme7w4IEuhaYeO3R5CcY9UR4bQiJmCqJqY=
+basic.com/dbapi.git v0.0.0-20191204094909-66f2832e579e/go.mod h1:eDXPnxaz6jZPDvBSk7ya7oSASWPCuUEgRTJCjsfKt/Q=
+basic.com/pubsub/protomsg.git v0.0.0-20191204083653-a32445f65a09 h1:3Aiyv/In6oJvjUI6jb5N+vt7S4jUqUf+bVEbOKxK6k0=
+basic.com/pubsub/protomsg.git v0.0.0-20191204083653-a32445f65a09/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU=
 basic.com/valib/deliver.git v0.0.0-20190927081905-2d390df9ede3 h1:VY23IpugB/FsU2hSnVeLjZKX5cSgNmhcSEiw6vxX+bg=
 basic.com/valib/deliver.git v0.0.0-20190927081905-2d390df9ede3/go.mod h1:bkYiTUGzckyNOjAgn9rB/DOjFzwoSHJlruuWQ6hu6IY=
 basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28 h1:3hejanzPEBvZSSvjIqayB83/6/6SLLrX9oNZAdiYELg=
 basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28/go.mod h1:CQ+UJyZV8MRzwwckncdUDu6/RDTKAzSIPCxc9tFcwPs=
-basic.com/valib/logger.git v0.0.0-20190904090733-b737ad2f8f18 h1:lfBv29ApfEvecKkUIpKHHsS1qu74ZZGNmzZkazK9PJ8=
-basic.com/valib/logger.git v0.0.0-20190904090733-b737ad2f8f18/go.mod h1:SPlOGUUlxCscwF1dkqmLb0oJXVqg1uJ8hsPXLFxrw1M=
+basic.com/valib/logger.git v0.0.0-20190928113028-4907b08c4159 h1:e5KopUEW/E9qmE3gUS6m7uO+/ti/N2m8rMMHB/HVqPk=
+basic.com/valib/logger.git v0.0.0-20190928113028-4907b08c4159/go.mod h1:SPlOGUUlxCscwF1dkqmLb0oJXVqg1uJ8hsPXLFxrw1M=
 basic.com/valib/shm.git v0.0.0-20191029034255-156e610f9bca h1:Y2Lgpxx5Tq0nKSAaB00F4piJhljMgPpfsBGQ2qpEloE=
 basic.com/valib/shm.git v0.0.0-20191029034255-156e610f9bca/go.mod h1:yYRM7bM9y0KKd4IfNt3myjsvkFVFIIWNjsvK14tNbq4=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/Microsoft/go-winio v0.4.14 h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU=
+github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
 github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
@@ -78,6 +80,7 @@
 github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
 github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
@@ -90,6 +93,7 @@
 github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
@@ -135,6 +139,8 @@
 golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b h1:ag/x1USPSsqHud38I9BAC88qdNLDHHtQ4mlgQIZPPNA=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
diff --git a/util/sqlite.go b/util/sqlite.go
index 84fd6a4..1abdb3c 100644
--- a/util/sqlite.go
+++ b/util/sqlite.go
@@ -18,9 +18,11 @@
 var camval dbapi.CameraApi
 var taskapi dbapi.TaskApi
 var sdkapi dbapi.SdkApi
+var fileApi dbapi.FileAnalysisApi
 var IsInit bool
 
 var CameraIds []protomsg.Camera
+var FileArr []protomsg.FileAnalysis
 var CameraTasks []protomsg.CameraAndTaskInfo
 
 //var TaskSdks []protomsg.TaskSdkInfo
@@ -38,11 +40,14 @@
 var Sdkflag = make(chan bool)
 var TaskSdkflag = make(chan bool)
 var Cameraflag = make(chan bool)
+var Fileflag = make(chan bool)
 
 var newsdkmsg = &protomsg.DbChangeMessage{}
 
 func initDbData(initchan chan bool) {
 	CameraIds = camval.FindAll()
+
+	FileArr,_ = fileApi.GetAnalysisFiles()
 
 	logger.Info("==============camera camera with task ================")
 	CameraTasks = camval.FindAllCameraAndTask()
@@ -57,7 +62,7 @@
 
 func updateDbData(opt []byte) {
 	if err := proto.Unmarshal(opt, newsdkmsg); err != nil {
-		logger.Error("publichshMessage ", err)
+		logger.Error("publish Message ", err)
 		return
 	}
 
@@ -68,6 +73,12 @@
 		Cameraflag <- true
 		logger.Info(CameraIds)
 		logger.Info("update camera finish.")
+	case protomsg.TableChanged_T_File:
+		logger.Info("update analysis files")
+		FileArr,_ = fileApi.GetAnalysisFiles()
+		Fileflag <- true
+		logger.Info("analysis files:",FileArr)
+		logger.Info("update files finish.")
 
 	case protomsg.TableChanged_T_CameraTask:
 		logger.Info("update cameratask")
@@ -92,7 +103,7 @@
 		logger.Info("update Sdkinfos finished!")
 
 	default:
-		logger.Info("unknow type operation")
+		logger.Info("other type operation")
 	}
 
 	//logger.Info(newsdkmsg)
diff --git a/util/util.go b/util/util.go
index be5e7ea..d0ad288 100644
--- a/util/util.go
+++ b/util/util.go
@@ -15,6 +15,10 @@
 	// 涓嶈鍏变韩鍐呭瓨/mangos鍙戦��/鎺ユ敹澶辫触鏈�澶ф鏁�,璁や负褰撳墠閫氶亾涓嶅啀浣跨敤, 鍏抽棴
 	// 鏈夐棶棰�,鎽勫儚鏈洪暱鏃堕棿鏂綉鍚庨噸杩�,浣嗘槸閫氶亾鍏抽棴
 	tooLongFailed = 300
+
+	File_Img_Id_Pre = "img_"
+	File_Video_Id_Pre = "video_"
+	File_Audio_Id_Pre = "audio_"
 )
 
 type SocketContext struct {

--
Gitblit v1.8.0