79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"sync"
|
|
|
|
"git.1e99.eu/1e99/2b2t/models"
|
|
_ "github.com/mattn/go-sqlite3"
|
|
)
|
|
|
|
func main() {
|
|
logger := log.New(os.Stdout, "", log.Flags())
|
|
logger.Printf(` ___ ____ ___ _______ __ __ _ `)
|
|
logger.Printf(` |__ \| _ \__ \__ __| \ \ / / | | `)
|
|
logger.Printf(` ) | |_) | ) | | | \ \ /\ / /__ _ __| | _____ _ __ `)
|
|
logger.Printf(` / /| _ < / / | | \ \/ \/ / _ \| '__| |/ / _ \ '__|`)
|
|
logger.Printf(` / /_| |_) / /_ | | \ /\ / (_) | | | < __/ | `)
|
|
logger.Printf(` |____|____/____| |_| \/ \/ \___/|_| |_|\_\___|_| `)
|
|
logger.Printf(` `)
|
|
logger.Printf(` `)
|
|
|
|
submitUrl, found := os.LookupEnv("WORKER_SUBMIT_URL")
|
|
if !found {
|
|
logger.Printf("No \"WORKER_SUBMIT_URL\", exiting")
|
|
os.Exit(1)
|
|
}
|
|
|
|
token, found := os.LookupEnv("WORKER_TOKEN")
|
|
if !found {
|
|
logger.Printf("No \"WORKER_TOKEN\", exiting")
|
|
os.Exit(1)
|
|
}
|
|
|
|
poller := makePoller(logger)
|
|
logger.Printf("Submitting data to %s", submitUrl)
|
|
logger.Printf("Using poller %s", poller)
|
|
logger.Printf("")
|
|
|
|
var wg sync.WaitGroup
|
|
stop := make(chan bool)
|
|
queue := make(chan models.PlayerCount, 1024)
|
|
|
|
go SubmitLoop(stop, &wg, queue, logger, submitUrl, token)
|
|
go PollLoop(stop, &wg, queue, logger, poller)
|
|
|
|
notify := make(chan os.Signal, 1)
|
|
signal.Notify(notify, os.Interrupt)
|
|
<-notify
|
|
|
|
close(stop)
|
|
wg.Wait()
|
|
}
|
|
|
|
func makePoller(logger *log.Logger) (poller Poller) {
|
|
pollerType, found := os.LookupEnv("WORKER_POLLER")
|
|
if !found {
|
|
logger.Printf("No \"WORKER_POLLER\", defaulting to \"mcapi\"")
|
|
pollerType = "mcapi"
|
|
}
|
|
|
|
switch pollerType {
|
|
case "dummy":
|
|
poller = &dummyPoller{}
|
|
return
|
|
|
|
case "mcapi":
|
|
poller = &mcApiPoller{
|
|
Address: "2b2t.org",
|
|
}
|
|
return
|
|
|
|
default:
|
|
logger.Printf("Invalid poller type")
|
|
os.Exit(1)
|
|
return
|
|
}
|
|
}
|