// warroom project main.go package main import ( "context" "net/http" "repositories.action2quare.com/ayo/gocommon/flagx" "repositories.action2quare.com/ayo/gocommon/wshandler" "repositories.action2quare.com/ayo/tavern/core" "repositories.action2quare.com/ayo/gocommon" "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/gocommon/session" ) var prefix = flagx.String("prefix", "", "") func main() { flagx.Parse() ctx, cancel := context.WithCancel(context.Background()) var config core.TavernConfig if err := gocommon.LoadConfig(&config); err != nil { panic(err) } consumer, err := session.NewConsumerWithConfig(ctx, config.SessionConfig) if err != nil { panic(err) } wsh, err := wshandler.NewWebsocketHandler(consumer) if err != nil { panic(err) } if tv, err := core.New(ctx, wsh, &config); err != nil { panic(err) } else { serveMux := http.NewServeMux() wsh.RegisterHandlers(serveMux, *prefix) tv.RegisterHandlers(ctx, serveMux, *prefix) server := gocommon.NewHTTPServer(serveMux) logger.Println("tavern is started") wsh.Start(ctx) server.Start() cancel() tv.Cleanup() wsh.Cleanup() } }