zhangmeng
2019-12-17 3fc4fa8f8bf65030ee0969d73f958b11d90b7daf
util/util.go
@@ -3,15 +3,23 @@
import (
   "context"
   "errors"
   "fmt"
   "basic.com/valib/deliver.git"
   // "github.com/pierrec/lz4"
   "taskpubsub/logger"
   "basic.com/valib/logger.git"
)
const SHMMaxTryCount = 3
const (
   // 共享内存发送/接收失败shmMaxTryCount次重新创建通道尝试
   ShmMaxTryCount = 7
   // 不论共享内存/mangos发送/接收失败最大次数,认为当前通道不再使用, 关闭
   // 有问题,摄像机长时间断网后重连,但是通道关闭
   tooLongFailed = 300
   File_Img_Id_Pre   = "img_"
   File_Video_Id_Pre = "video_"
   File_Audio_Id_Pre = "audio_"
)
type SocketContext struct {
   Sock    deliver.Deliver
@@ -89,7 +97,6 @@
// create server
func NewSocketListen(mode int, url string, shm bool) (socket SocketContext, err error) {
   logger.Info("url is: ", url)
   ctx, cancel := context.WithCancel(context.Background())
   socket.Context = ctx
@@ -103,7 +110,7 @@
      var err error
      socket.Sock, err = deliver.NewServerWithError(deliver.Mode(mode), url)
      if err != nil {
         fmt.Println("TASK CREATE SERVER SHM ERROR: ", err)
         logger.Info("TASK CREATE SERVER SHM ERROR: ", err)
      }
   } else {
      socket.Sock = deliver.NewServer(deliver.Mode(mode), url)
@@ -131,3 +138,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
}