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