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