"Prefer obsolete legacy IPv4 address during name resolution")
version := flag.Bool("version", false, "print version")
warranty := flag.Bool("warranty", false, "print warranty information")
+ flag.Usage = func() {
+ fmt.Fprintln(os.Stderr, "Usage: vors-client [opts] -name NAME -pub PUB -srv HOST:PORT")
+ flag.PrintDefaults()
+ fmt.Fprintln(os.Stderr, `
+Press Tab to cycle through peers and chat windows. Pressing Enter in a
+peer window toggles silencing (no audio will be played from it). Chat
+windows allows you to enter the text and send it to everyone in the room
+by pressing Enter.
+
+Press F1 to toggle mute -- no sending of microphone audio to server).
+Press F10 to quit.
+
+Each peer contains various statistics: number of packets received from
+it (or sent, if it is you), traffic amount, number of silence seconds,
+number of bad packets (malformed or altered, number of lost packets,
+number of reordered packets. "TALK" means that recently an audio packet
+was received. "MUTE" means that peer is in muted mode. "SILENT" means
+that peer is locally muted.`)
+ }
flag.Parse()
log.SetFlags(log.Lmicroseconds)
import (
"flag"
- "os"
"sort"
"strings"
"time"
GUIReadyC = make(chan struct{})
)
-func guiQuit(g *gocui.Gui, v *gocui.View) error {
- go func() {
- time.Sleep(100 * time.Millisecond)
- os.Exit(0)
- }()
- return gocui.ErrQuit
-}
-
func guiLayout(gui *gocui.Gui) error {
maxX, _ := gui.Size()
prevY := 0
"Prefer obsolete legacy IPv4 address during name resolution")
version := flag.Bool("version", false, "print version")
warranty := flag.Bool("warranty", false, "print warranty information")
+ flag.Usage = func() {
+ fmt.Fprintln(os.Stderr, "Usage: vors-server [opts] -bind HOST:PORT -key PATH -srv HOST:PORT")
+ flag.PrintDefaults()
+ fmt.Fprintln(os.Stderr, `
+List of known rooms is shown by default. If room requires password
+authentication, then "protected" is written nearby. Each room's member
+username and IP address is shown, together with various statistics:
+number of received, transmitted packets, number of bad packets (failed
+authentication), amount of traffic. "TALK" means that recently an audio
+packet was received. "MUTE" means that peer is in muted mode.
+Press F10 to quit.`)
+ }
flag.Parse()
log.SetFlags(log.Lmicroseconds | log.Lshortfile)
}
defer GUI.Close()
GUI.SetManagerFunc(guiLayout)
- if err := GUI.SetKeybinding("", 'q', gocui.ModNone, guiQuit); err != nil {
+ if err := GUI.SetKeybinding("", gocui.KeyF10, gocui.ModNone,
+ func(g *gocui.Gui, v *gocui.View) error {
+ go func() {
+ time.Sleep(100 * time.Millisecond)
+ os.Exit(0)
+ }()
+ return gocui.ErrQuit
+ }); err != nil {
log.Fatal(err)
}