package main import ( "context" "demo/deliver" "flag" "fmt" "os" ) 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) // shmReciever2(ipc, count, 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) // shmSender2(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 { if t == "pushpull" { return deliver.PushPull } else if t == "pubsub" { return deliver.PubSub } else if t == "pair" { return deliver.Pair } else if t == "reqrep" { return deliver.ReqRep } else if t == "shm" { return deliver.Shm } return deliver.NONE } func main() { flag.Parse() m := modeType(mode) if m > deliver.ModeStart { if proc == act { senderMode(ipc, m, procCount, oneSendnRecv) } else { recvMode(ipc, m, procCount, oneSendnRecv) } } fmt.Fprintf(os.Stderr, "Usage: pushpull push|pull ...\n") os.Exit(1) }