zhangmeng
2019-12-05 e87bc90683436ee856c1d14ecab1f16940a20471
util/util.go
@@ -1,17 +1,34 @@
package util
import (
   "basic.com/valib/deliver.git"
   "context"
   "errors"
   // "github.com/pierrec/lz4"
   "taskpubsub/logger"
   "basic.com/valib/deliver.git"
   "basic.com/valib/logger.git"
)
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
   Context context.Context
   Cancel  context.CancelFunc
   Mode   int
   URL    string
   UseSHM bool
}
//  1. oldstring element is not in new  : abandon(delete)
@@ -86,9 +103,17 @@
   socket.Context = ctx
   socket.Cancel = cancel
   if shm{
      socket.Sock = deliver.NewServer(deliver.Mode(mode), url)
   }else{
   socket.Mode = mode
   socket.URL = url
   socket.UseSHM = shm
   if shm {
      var err error
      socket.Sock, err = deliver.NewServerWithError(deliver.Mode(mode), url)
      if err != nil {
         logger.Info("TASK CREATE SERVER SHM ERROR: ", err)
      }
   } else {
      socket.Sock = deliver.NewServer(deliver.Mode(mode), url)
   }
@@ -114,3 +139,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
}