From a735e666cff14e4e485110d2a59d401b4be61b9b Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期四, 29 八月 2019 17:50:09 +0800
Subject: [PATCH] add recover
---
camera/camera.go | 36 ++++++++++++++++++++++++++++++++----
1 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/camera/camera.go b/camera/camera.go
index 5329bae..727e017 100644
--- a/camera/camera.go
+++ b/camera/camera.go
@@ -5,10 +5,13 @@
//"sync"
"taskpubsub/logger"
- "basic.com/pubsub/protomsg.git"
- "github.com/gogo/protobuf/proto"
"taskpubsub/sdk"
"taskpubsub/util"
+
+ "basic.com/pubsub/protomsg.git"
+ "github.com/gogo/protobuf/proto"
+
+ // "golang.org/x/sys/unix"
"fmt"
//"time"
@@ -21,6 +24,8 @@
var SocketManage = make(map[string]util.SocketContext)
+var shm bool = false
+
var innerRecvTopic = []string{
"virtual-faceextract-sdk-pull_2", //to web 浠ュ浘鎼滃浘
}
@@ -31,7 +36,9 @@
}
}
-func Init() {
+func Init(useShm bool) {
+ shm = useShm
+
logger.Info("============ camera info ====================")
for _, cd := range util.CameraIds {
logger.Info(cd)
@@ -54,7 +61,15 @@
if _, isExist := SocketManage[id]; !isExist { //涓嶅瓨鍦�
url := fmt.Sprintf("ipc:///tmp/%s.ipc", id)
- socket, err := util.NewSocketListen(int(deliver.PushPull), url)
+ m := deliver.PushPull
+ if shm {
+ m = deliver.Shm
+ url = id
+
+ }
+
+ fmt.Println("CAMERA URL : ", url)
+ socket, err := util.NewSocketListen(int(m), url, shm)
if err != nil {
logger.Error("create socket error")
return
@@ -109,6 +124,8 @@
func Recv(socket util.SocketContext) {
+ tryCount := 0
+
var recvmessage []byte
var imagemsg protomsg.Image
var err error
@@ -120,6 +137,17 @@
default:
if recvmessage, err = socket.Sock.Recv(); err != nil {
//logger.Error("[camera] err is: ", err)
+ if socket.UseSHM {
+ if tryCount > util.SHMMaxTryCount {
+ socket, err = util.NewSocketListen(socket.Mode, socket.URL, socket.UseSHM)
+ fmt.Println("CAMERA SHM TRY :", tryCount, " RESTART IT")
+
+ tryCount = 0
+
+ continue
+ }
+ tryCount++
+ }
continue
}
--
Gitblit v1.8.0