func main() { switch kingpin.MustParse(app.Parse(os.Args[1:])) { case master.FullCommand(): println("listening on", (*masterIp)+":"+strconv.Itoa(*masterPort)) m.RunMaster((*masterIp) + ":" + strconv.Itoa(*masterPort)) case sender.FullCommand(): var wg sync.WaitGroup sendChan, err := s.NewSendChannel(*sendToChanName, *senderAgentPort, &wg) if err != nil { panic(err) } file := os.Stdin if *sendFile != "" { file, err = os.Open(*sendFile) if err != nil { log.Fatal(err) } defer file.Close() } counter := 0 scanner := bufio.NewScanner(file) for scanner.Scan() { sendChan <- scanner.Bytes() counter++ } if err := scanner.Err(); err != nil { log.Fatal(err) } close(sendChan) wg.Wait() case receiver.FullCommand(): target := r.FindTarget(*receiveFromChanName, *receiverMaster) rc := r.NewReceiveChannel(*receiveFromChanName, 0) recvChan, err := rc.GetDirectChannel(target) if err != nil { panic(err) } for m := range recvChan { println(string(m)) } case agent.FullCommand(): agentServer := a.NewAgentServer(agentOption) agentServer.Run() } }
func GetLocalSendChannel(name string, wg *sync.WaitGroup) (chan []byte, error) { return sender.NewSendChannel(name, networkContext.AgentPort, wg) }