From 26f699593d76d6fa4bcf320c84fd723343c4b5f4 Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期一, 20 五月 2019 15:19:15 +0800 Subject: [PATCH] add one pull multi push --- main.go | 92 +++++++++++++++++++++++++++++++--------------- 1 files changed, 62 insertions(+), 30 deletions(-) diff --git a/main.go b/main.go index 24b9193..5c5eb53 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ import ( "context" "demo/deliver" + "flag" "fmt" "os" ) @@ -10,6 +11,58 @@ const dLen = 12 * 1024 * 1024 var ctx, cancel = context.WithCancel(context.Background()) + +func senderMode(ipc string, m deliver.Mode, count int, one bool) { + if m == deliver.ReqRep { + req(ipc, m) + } else if m == deliver.Shm { + shmSender(ipc, 2, 32*1024*1024) + } + + if one { + oneSender(ipc, m) + } else { + nSender(ipc, m, count) + } +} + +func recvMode(ipc string, m deliver.Mode, count int, n bool) { + if m == deliver.ReqRep { + rep(ipc, m) + } else if m == deliver.Shm { + shmReciever(ipc, count) + } + + if n { + nReciever(ipc, m, count) + } else { + oneReciever(ipc, m) + } +} + +var ( + proc string + procCount int + mode string + ipc string + oneSendnRecv bool +) + +const ( + act = "act" + pass = "pass" +) + +func init() { + flag.StringVar(&proc, "p", "act", "proc as sender") + flag.IntVar(&procCount, "c", 1, "proc run count") + + flag.StringVar(&mode, "m", "pushpull", "proc run mode pushpull or pubsub etc.") + + flag.StringVar(&ipc, "i", "ipc:///tmp/pic.ipc", "ipc label") + + flag.BoolVar(&oneSendnRecv, "n", true, "one send n recv") +} func modeType(t string) deliver.Mode { @@ -28,39 +81,18 @@ return deliver.NONE } -func senderMode(ipc string, m deliver.Mode) { - if m == deliver.ReqRep { - req(ipc, m) - } else if m == deliver.Shm { - shmSender(ipc, 2, 32*1024*1024) - } - sender(ipc, m) -} - -func recvMode(ipc string, m deliver.Mode, strCount string) { - if m == deliver.ReqRep { - rep(ipc, m) - } else if m == deliver.Shm { - shmReciever(ipc, strCount) - } - reciever(ipc, m, strCount) -} - func main() { - if len(os.Args) > 3 && os.Args[1] == "producer" { - m := modeType(os.Args[2]) - if m > deliver.ModeStart { - senderMode(os.Args[3], m) + flag.Parse() + + m := modeType(mode) + if m > deliver.ModeStart { + if proc == act { + senderMode(ipc, m, procCount, oneSendnRecv) + } else { + recvMode(ipc, m, procCount, oneSendnRecv) } - os.Exit(0) } - if len(os.Args) > 3 && os.Args[1] == "consumer" { - m := modeType(os.Args[2]) - if m > deliver.ModeStart { - recvMode(os.Args[3], m, os.Args[4]) - } - os.Exit(0) - } + fmt.Fprintf(os.Stderr, "Usage: pushpull push|pull <URL> <ARG> ...\n") os.Exit(1) -- Gitblit v1.8.0