grumble/grumble.go
2011-04-06 18:12:22 +02:00

61 lines
1.2 KiB
Go

// Copyright (c) 2010 The Grumble Authors
// The use of this source code is goverened by a BSD-style
// license that can be found in the LICENSE-file.
package main
import (
"flag"
"fmt"
"os"
"log"
"mumbleproto"
"goprotobuf.googlecode.com/hg/proto"
)
var help *bool = flag.Bool("help", false, "Show this help")
var port *int = flag.Int("port", 64738, "Default port to listen on")
var host *string = flag.String("host", "0.0.0.0", "Default host to listen on")
func usage() {
fmt.Fprintf(os.Stderr, "usage: grumble [options]\n")
flag.PrintDefaults()
}
// Check that we're using a version of goprotobuf that is able to
// correctly encode empty byte slices.
func checkProtoLib() {
us := &mumbleproto.UserState{}
us.Texture = []byte{}
d, _ := proto.Marshal(us)
nus := &mumbleproto.UserState{}
proto.Unmarshal(d, nus)
if nus.Texture == nil {
log.Fatal("Unpatched version of goprotobuf. Grumble is refusing to run.")
}
}
func main() {
flag.Parse()
if *help == true {
usage()
return
}
checkProtoLib()
// Create our default server
m, err := NewServer(*host, *port)
if err != nil {
return
}
// And launch it.
go m.ListenAndMurmur()
// Listen forever
sleeper := make(chan int)
zzz := <-sleeper
if zzz > 0 {
}
}