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