liuxiaolong
2019-12-05 9cb979b5ab6df03bc64b09fb4a722bab8557f4bc
add file analysis
6个文件已修改
96 ■■■■ 已修改文件
.gitignore 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera/camera.go 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.mod 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.sum 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/sqlite.go 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/util.go 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -24,3 +24,5 @@
taskpubsub
*.log*
.idea
.vscode
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
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
)
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=
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)
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 {