From b6d2aeec8bd849c70028c01943968eba26474ea4 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期一, 26 八月 2019 14:15:21 +0800
Subject: [PATCH] update shm

---
 go.sum             |    2 ++
 profile/shmrecv.go |   29 +++++++++++++++++++++++------
 go.mod             |    1 +
 profile/shmsend.go |   14 ++++++++++++++
 4 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/go.mod b/go.mod
index 77b954b..adf5ff7 100644
--- a/go.mod
+++ b/go.mod
@@ -3,6 +3,7 @@
 go 1.12
 
 require (
+	basic.com/valib/shm.git v0.0.0-20190826054634-a0123f163edd
 	github.com/gorilla/websocket v1.4.1 // indirect
 	golang.org/x/sys v0.0.0-20190825160603-fb81701db80f
 	nanomsg.org/go-mangos v1.4.0
diff --git a/go.sum b/go.sum
index fd43cdd..8204a36 100644
--- a/go.sum
+++ b/go.sum
@@ -1,3 +1,5 @@
+basic.com/valib/shm.git v0.0.0-20190826054634-a0123f163edd h1:hRQzhw2zyfLY9vdbuv/dw92BVjax8xx9fFeNBu4U9/U=
+basic.com/valib/shm.git v0.0.0-20190826054634-a0123f163edd/go.mod h1:yYRM7bM9y0KKd4IfNt3myjsvkFVFIIWNjsvK14tNbq4=
 github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
 github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 golang.org/x/sys v0.0.0-20190825160603-fb81701db80f h1:LCxigP8q3fPRGNVYndYsyHnF0zRrvcoVwZMfb8iQZe4=
diff --git a/profile/shmrecv.go b/profile/shmrecv.go
index 7bbfe60..08ca30c 100644
--- a/profile/shmrecv.go
+++ b/profile/shmrecv.go
@@ -24,8 +24,23 @@
 		default:
 			msg, err = c.Recv()
 			if err != nil {
+				c.Close()
+				url := "hello"
+				i, err := deliver.NewClientWithError(deliver.Shm, url)
+				for {
+					if err == nil {
+						break
+					}
+					time.Sleep(1 * time.Second)
+					i, err = deliver.NewClientWithError(deliver.Shm, url)
+
+					fmt.Println("client create failed : ", err)
+
+				}
+				c = i
+
 				fmt.Println("recv error : ", err)
-				return
+				continue
 			}
 			if ch != nil {
 				ch <- true
@@ -67,7 +82,9 @@
 		go shmrecver(ctx, s, 0, nil)
 
 	} else {
-		// recvers(ctx, ipc, count, nil)
+		recvers(ctx, ipc, count, nil)
+
+		return
 
 		chWaiter := make(chan bool, count)
 		cs := recvers(ctx, ipc, count, chWaiter)
@@ -85,10 +102,10 @@
 						for _, v := range cs {
 							v.Close()
 						}
-						cs = recvers(ctx, ipc, count, chWaiter)
-						fmt.Println("restart recievers")
-						waitCount = 0
-						continue
+						// cs = recvers(ctx, ipc, count, chWaiter)
+						// fmt.Println("restart recievers")
+						// waitCount = 0
+						// continue
 					}
 					time.Sleep(time.Millisecond * 5)
 					waitCount++
diff --git a/profile/shmsend.go b/profile/shmsend.go
index 61a3b87..2feca8b 100644
--- a/profile/shmsend.go
+++ b/profile/shmsend.go
@@ -22,6 +22,20 @@
 			return
 		default:
 			if err = s.Send(buf); err != nil {
+				s.Close()
+				url := "hello"
+				i, err := deliver.NewClientWithError(deliver.Shm, url)
+				for {
+					if err == nil {
+						break
+					}
+					time.Sleep(1 * time.Second)
+					i, err = deliver.NewClientWithError(deliver.Shm, url)
+
+					fmt.Println("client create failed : ", err)
+
+				}
+				s = i
 
 				fmt.Printf("can't send message on push socket: %s\n", err.Error())
 			} else {

--
Gitblit v1.8.0