package main import ( "bufio" "flag" "fmt" "log" "maps" "os" "slices" "strings" "git.rctt.net/solec/server" ) var ( cmds = map[string]func(args []string){ "broadcast": sendBroadcast, } serv *server.Server ) func main() { fmt.Println("SOLEC MOCK SERVER") fmt.Println("Commands:", slices.Sorted(maps.Keys(cmds))) addr := flag.String("a", "localhost:9999", "listening address:port") name := flag.String("n", "localhost", "server name") flag.Parse() serv = server.NewServer(*addr, *name) go func() { if err := serv.Start(); err != nil { panic(err) } }() log.Println("listening on", *addr) readCmds() } func readCmds() { sc := bufio.NewScanner(os.Stdin) for sc.Scan() { args := strings.Split(sc.Text(), " ") cmd, ok := cmds[args[0]] if !ok { fmt.Println("unknown command") continue } cmd(args[1:]) } if err := sc.Err(); err != nil { log.Println(err) } } func sendBroadcast(args []string) { msg := strings.Join(args[0:], " ") serv.SendBroadcast(msg) }