zhangmeng
2019-11-27 e8bfcf3115506b2c4109d912dd1bffc7e8c44d9b
util/util.go
@@ -1,14 +1,21 @@
package util
import (
   "basic.com/valib/deliver.git"
   "context"
   "errors"
   "basic.com/valib/deliver.git"
   "basic.com/valib/logger.git"
)
const SHMMaxTryCount = 3
const (
   // 共享内存发送/接收失败shmMaxTryCount次重新创建通道尝试
   shmMaxTryCount = 7
   // 不论共享内存/mangos发送/接收失败最大次数,认为当前通道不再使用, 关闭
   // 有问题,摄像机长时间断网后重连,但是通道关闭
   tooLongFailed = 300
)
type SocketContext struct {
   Sock    deliver.Deliver
@@ -128,3 +135,23 @@
   return socket, nil
}
func MaybeRestartSocket(socket SocketContext, tryCnt *int) SocketContext {
   if socket.UseSHM {
      if *tryCnt > shmMaxTryCount {
         logger.Info("SDK SEND SHM TRY :", shmMaxTryCount, " RESTART IT")
         socket.Sock.Close()
         newSocket, err := NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
         if err != nil {
            return socket
         }
         *tryCnt = 0
         return newSocket
      }
   }
   return socket
}