contented-multi: initial commit
This commit is contained in:
parent
36b4b124f7
commit
d10026ae82
58
cmd/contented-multi/main.go
Normal file
58
cmd/contented-multi/main.go
Normal file
@ -0,0 +1,58 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
"code.ivysaur.me/contented"
|
||||
)
|
||||
|
||||
type ContentedMultiCfg struct {
|
||||
Servers []struct {
|
||||
ListenAddr string
|
||||
Options contented.ServerOptions
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
configFile := flag.String("config", "contented-multi.cfg", "Path to configuration file")
|
||||
flag.Parse()
|
||||
|
||||
fh, err := os.Open(*configFile)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
var cfg ContentedMultiCfg
|
||||
err = json.NewDecoder(fh).Decode(&cfg)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fh.Close()
|
||||
|
||||
wg := sync.WaitGroup{}
|
||||
wg.Add(len(cfg.Servers))
|
||||
|
||||
for i, _ := range cfg.Servers {
|
||||
go (func(i int) {
|
||||
defer wg.Done()
|
||||
|
||||
s, err := contented.NewServer(&cfg.Servers[i].Options)
|
||||
if err != nil {
|
||||
log.Printf("Failed to create server %d/%d: %s", i+1, len(cfg.Servers), err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = http.ListenAndServe(cfg.Servers[i].ListenAddr, s)
|
||||
log.Printf("Server %d/%d shutting down: %s", i+1, len(cfg.Servers), err.Error())
|
||||
|
||||
})(i)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
}
|
Loading…
Reference in New Issue
Block a user