zhangmeng
2019-12-05 e87bc90683436ee856c1d14ecab1f16940a20471
update
4个文件已修改
102 ■■■■ 已修改文件
camera/camera.go 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
go.mod 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sdk/sdk.go 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/util.go 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
camera/camera.go
@@ -45,10 +45,10 @@
    }
    //文件初始化
    for _,f := range util.FileArr {
    for _, f := range util.FileArr {
        logger.Info(f)
    }
    for _,f :=range util.FileArr {
    for _, f := range util.FileArr {
        createCameraRecvServerAndListen(f.Id)
    }
@@ -100,7 +100,7 @@
        var oldcameras []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){
            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)
            }
        }
@@ -136,7 +136,7 @@
        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){
            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)
            }
        }
@@ -169,24 +169,25 @@
    for {
        select {
        case <-socket.Context.Done():
            socket.Sock.Close()
            logger.Error("listen recv quit")
            return
        default:
            if recvmessage, err = socket.Sock.Recv(); err != nil {
                tryCount++
                socket = util.MaybeRestartSocket(socket, &tryCount)
                // tryCount++
                // socket = util.MaybeRestartSocket(socket, &tryCount)
                // if socket.UseSHM {
                //     if tryCount > util.SHMMaxTryCount {
                //         socket.Sock.Close()
                //         socket, err = util.NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
                //         logger.Info("SDK SEND SHM TRY :", util.SHMMaxTryCount, " RESTART IT")
                //         tryCount = 0
                //         continue
                //     }
                //     tryCount++
                // }
                if socket.UseSHM {
                    if tryCount > util.ShmMaxTryCount {
                        socket.Sock.Close()
                        socket, err = util.NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
                        logger.Info("SDK SEND SHM TRY :", util.ShmMaxTryCount, " RESTART IT")
                        tryCount = 0
                        continue
                    }
                    tryCount++
                }
                continue
            }
go.mod
@@ -3,11 +3,11 @@
go 1.12
require (
    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/dbapi.git v0.0.0-20191204094909-66f2832e579e
    basic.com/pubsub/protomsg.git v0.0.0-20191204083653-a32445f65a09
    basic.com/valib/deliver.git v0.0.0-20190927081905-2d390df9ede3
    basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28
    basic.com/valib/logger.git v0.0.0-20190928113028-4907b08c4159 // indirect
    basic.com/valib/logger.git v0.0.0-20190928113028-4907b08c4159
    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
sdk/sdk.go
@@ -216,23 +216,26 @@
    for {
        select {
        case <-socket.Context.Done():
            socket.Sock.Close()
            logger.Info("socket close")
            return
        default:
            if msg, err := socket.Sock.Recv(); err != nil {
                tryCount++
                socket = util.MaybeRestartSocket(socket, &tryCount)
                // if socket.UseSHM {
                //     if tryCount > util.SHMMaxTryCount {
                //         socket.Sock.Close()
                //         socket, err = util.NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
                //         logger.Info("SDK SEND SHM TRY :", util.SHMMaxTryCount, " RESTART IT")
                //         tryCount = 0
                //         continue
                //     }
                //     tryCount++
                // }
                // tryCount++
                // socket = util.MaybeRestartSocket(socket, &tryCount)
                if socket.UseSHM {
                    if tryCount > util.ShmMaxTryCount {
                        socket.Sock.Close()
                        socket, err = util.NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
                        logger.Info("SDK SEND SHM TRY :", util.ShmMaxTryCount, " RESTART IT")
                        tryCount = 0
                        continue
                    }
                    tryCount++
                }
                continue
            } else {
                err = proto.Unmarshal(msg, &repsdkmsg)
@@ -259,6 +262,8 @@
    for {
        select {
        case <-socket.Context.Done():
            socket.Sock.Close()
            logger.Info("socket is close")
            return
        case v, ok := <-in:
@@ -274,19 +279,19 @@
                        logger.Error("failed send:sdkid=", sdkid)
                    }
                    tryCount++
                    socket = util.MaybeRestartSocket(socket, &tryCount)
                    // tryCount++
                    // socket = util.MaybeRestartSocket(socket, &tryCount)
                    // if socket.UseSHM {
                    //     if tryCount > util.SHMMaxTryCount {
                    //         socket.Sock.Close()
                    //         socket, err = util.NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
                    //         logger.Info("SDK SEND SHM TRY :", util.SHMMaxTryCount, " RESTART IT")
                    //         tryCount = 0
                    //         continue
                    //     }
                    //     tryCount++
                    // }
                    if socket.UseSHM {
                        if tryCount > util.ShmMaxTryCount {
                            socket.Sock.Close()
                            socket, err = util.NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
                            logger.Info("SDK SEND SHM TRY :", util.ShmMaxTryCount, " RESTART IT")
                            tryCount = 0
                            continue
                        }
                        tryCount++
                    }
                    continue
                }
util/util.go
@@ -11,12 +11,12 @@
const (
    // 共享内存发送/接收失败shmMaxTryCount次重新创建通道尝试
    shmMaxTryCount = 7
    ShmMaxTryCount = 7
    // 不论共享内存/mangos发送/接收失败最大次数,认为当前通道不再使用, 关闭
    // 有问题,摄像机长时间断网后重连,但是通道关闭
    tooLongFailed = 300
    File_Img_Id_Pre = "img_"
    File_Img_Id_Pre   = "img_"
    File_Video_Id_Pre = "video_"
    File_Audio_Id_Pre = "audio_"
)
@@ -142,8 +142,8 @@
func MaybeRestartSocket(socket SocketContext, tryCnt *int) SocketContext {
    if socket.UseSHM {
        if *tryCnt > shmMaxTryCount {
            logger.Info("SDK SEND SHM TRY :", shmMaxTryCount, " RESTART IT")
        if *tryCnt > ShmMaxTryCount {
            logger.Info("SDK SEND SHM TRY :", ShmMaxTryCount, " RESTART IT")
            socket.Sock.Close()
            newSocket, err := NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)