| | |
| | | } |
| | | |
| | | //文件初始化 |
| | | 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) |
| | | } |
| | | |
| | |
| | | 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) |
| | | } |
| | | } |
| | |
| | | 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) |
| | | } |
| | | } |
| | |
| | | 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 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 |
| | |
| | | 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) |
| | |
| | | for { |
| | | select { |
| | | case <-socket.Context.Done(): |
| | | socket.Sock.Close() |
| | | |
| | | logger.Info("socket is close") |
| | | return |
| | | case v, ok := <-in: |
| | |
| | | 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 |
| | | } |
| | |
| | | |
| | | 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_" |
| | | ) |
| | |
| | | |
| | | 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) |