summaryrefslogtreecommitdiff
path: root/src/rhctl/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/rhctl/main.go')
-rw-r--r--src/rhctl/main.go61
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")
}