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