1 // (c) Bernhard Tittelbach, 2013
15 // ---------- Main Code -------------
23 fmt.Fprintf(os.Stderr, "Usage: door_client_zmq\n")
28 flag.StringVar(&cmd_port_, "cmdport", "tcp://localhost:5555", "zmq command socket path")
29 flag.StringVar(&sub_port_, "pubport", "gmp://*:6666", "zmq subscribe/listen socket path")
34 func LineReader(out chan <- [][]byte, stdin * os.File) {
35 linescanner := bufio.NewScanner(stdin)
36 linescanner.Split(bufio.ScanLines)
37 for linescanner.Scan() {
38 if err := linescanner.Err(); err != nil {
43 text := bytes.Fields([]byte(linescanner.Text()))
52 cmd_chans, sub_chans := ZmqsInit(cmd_port_, sub_port_)
53 defer cmd_chans.Close()
54 defer sub_chans.Close()
58 user_input_chan := make(chan [][]byte, 1)
59 go LineReader(user_input_chan, os.Stdin)
60 defer os.Stdin.Close()
64 case input, input_open := (<- user_input_chan):
66 if len(input) == 0 { continue }
67 switch string(input[0]) {
70 fmt.Println("Now listening")
75 cmd_chans.Out() <- input
76 fmt.Println( <- cmd_chans.In())
81 case pubsubstuff := <- sub_chans.In():
87 fmt.Println(pubsubstuff)