diff options
Diffstat (limited to 'src/rhctl/main.go')
-rw-r--r-- | src/rhctl/main.go | 61 |
1 files changed, 37 insertions, 24 deletions
diff --git a/src/rhctl/main.go b/src/rhctl/main.go index 14a86bc..dff1758 100644 --- a/src/rhctl/main.go +++ b/src/rhctl/main.go @@ -75,29 +75,42 @@ func main() { rhl.Println("Error reading configuration:", err.Error()) return } + rhl.Printf("just started...") - rhdl.Printf("config: %+v", conf) - - // sw, err := SwitchInit("/dev/ttyUSB0", B9600) - // if err != nil { - // rhl.Println("error audio switch: ", err) - // return - // } - - // master, err := ServerInit("master", "/dev/ttyUSB1", "/dev/ttyUSB2", B38400) - // if err != nil { - // rhl.Println("error master server: ", err) - // return - // } - - // standby, err := ServerInit("standby", "/dev/ttyUSB3", "/dev/ttyUSB4", B38400) - // if err != nil { - // rhl.Println("error standby server: ", err) - // return - // } - - // sw.Run() - // master.Run() - // standby.Run() - // time.Sleep(time.Second) + stop := make(chan bool) + + sw, err := SwitchInit(conf) + if err != nil { + rhl.Println("error initializing audio switch: ", err) + return + } + + var servers []*PlayoutServer + for s, _ := range conf.Servers { + server, err := ServerInit(s, conf) + if err != nil { + rhl.Printf("error initializing playout-server(%s): %v", s, err) + return + } + servers = append(servers, server) + } + + go func() { + rhl.Printf("starting audioswitch handler") + sw.Run() + rhl.Printf("audioswitch handler has stopped") + stop <- true + }() + + for _, server := range servers { + go func(server *PlayoutServer) { + rhl.Printf("starting playout-server(%s) handler", server.name) + server.Run() + rhl.Printf("playout-server(%s) handler has stopped", server.name) + stop <- true + }(server) + } + + <-stop + rhl.Printf("at least one essential part has stopped - bringing down the whole process") } |