summaryrefslogtreecommitdiff
path: root/src/rhctl/telnet.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/rhctl/telnet.go')
-rw-r--r--src/rhctl/telnet.go39
1 files changed, 37 insertions, 2 deletions
diff --git a/src/rhctl/telnet.go b/src/rhctl/telnet.go
index de98475..e4044ef 100644
--- a/src/rhctl/telnet.go
+++ b/src/rhctl/telnet.go
@@ -22,6 +22,8 @@
package main
import (
+ "sort"
+
"github.com/spreadspace/telgo"
)
@@ -30,8 +32,41 @@ type TelnetInterface struct {
}
func telnetCmdState(c *telgo.Client, args []string, ctrl *SwitchControl) bool {
- ctrl.Commands <- &Command{Type: CmdState}
- // TODO: implement this
+ resp := make(chan interface{})
+ ctrl.Commands <- &Command{Type: CmdState, Response: resp}
+
+ r := <-resp
+ switch r.(type) {
+ case error:
+ c.Sayln("%v", r)
+ case State:
+ s := r.(State)
+ c.Sayln("Mood: %v", s.Mood)
+
+ c.Sayln("Switch:")
+ c.Sayln(" audio:") //
+ c.Sayln(" output 1: ? (silence!!)?") //
+ c.Sayln(" output 2: ? (silence!!)?") // TODO: fill this with actual data
+ c.Sayln(" relays: ?") //
+ c.Sayln(" oc: ?") //
+
+ c.Sayln("Server:")
+ var names []string
+ for n, _ := range s.Server {
+ names = append(names, n)
+ }
+ sort.Strings(names)
+ for _, name := range names {
+ if name == s.ActiveServer {
+ c.Say(" * ")
+ } else {
+ c.Say(" ")
+ }
+ c.Sayln("%s(%s): '%s'", name, s.Server[name].Health, s.Server[name].Channel)
+ }
+ default:
+ c.Sayln("invalid response of type %T: %+v", r, r)
+ }
return false
}