package main
|
|
import (
|
"context"
|
"demo/deliver"
|
"fmt"
|
"os"
|
)
|
|
const dLen = 12 * 1024 * 1024
|
|
var ctx, cancel = context.WithCancel(context.Background())
|
|
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 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)
|
}
|
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)
|
|
}
|