X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;ds=sidebyside;f=go%2Fdoor_daemon_zmq%2Fmain.go;fp=go%2Fdoor_daemon_zmq%2Fmain.go;h=28be188a1df4d35b69106ea53514481cc3dc9555;hb=88e758b4025ef2a84acafc7b832a41028280c296;hp=0000000000000000000000000000000000000000;hpb=70bd6ea215fdd1dbd2eb9556ff4aa0a2acde24bc;p=svn42.git diff --git a/go/door_daemon_zmq/main.go b/go/door_daemon_zmq/main.go new file mode 100644 index 0000000..28be188 --- /dev/null +++ b/go/door_daemon_zmq/main.go @@ -0,0 +1,59 @@ +// (c) Bernhard Tittelbach, 2013 + +package main + +import ( + "fmt" + "os" + "flag" + "log" +) + +//~ func StringArrayToByteArray(ss []string) [][]byte { + //~ bb := make([][]byte, len(ss)) + //~ for index, s := range(ss) { + //~ bb[index] = []byte(s) + //~ } + //~ return bb +//~ } + +// ---------- Main Code ------------- + +func usage() { + fmt.Fprintf(os.Stderr, "Usage: door_daemon_0mq \n") + flag.PrintDefaults() +} + +func main() { + flag.Usage = usage + flag.Parse() + + args := flag.Args() + if len(args) < 1 { + fmt.Fprintf(os.Stderr, "Input file is missing!\n"); + usage() + os.Exit(1); + } + + cmd_chans, pub_chans := ZmqsInit("tcp://localhost:5555", "gmp://*:6666") + + serial_wr, serial_rd, err := OpenAndHandleSerial(args[0], pub_chans.Out()) + if err != nil { + close(serial_wr) + panic(err) + } + + serial_wr <- "f" + firmware_version := <- serial_rd + log.Print("Firmware version:", firmware_version) + + for incoming_request := range cmd_chans.In() { + reply, err := HandleCommand(incoming_request, pub_chans.Out(), serial_wr, serial_rd) + if err != nil { + cmd_chans.Out() <- [][]byte{[]byte("ERROR"), []byte(err.Error())} + log.Print(err) + } else { + cmd_chans.Out() <- reply + } + } +}