main.go 996 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package main
  2. import (
  3. "log"
  4. "net"
  5. "strings"
  6. gamelangBingopb "git.alfi.li/gamelang/protobuf/gamelang-bingo"
  7. bm "git.alfi.li/gamelang/systems/bingomanager"
  8. "google.golang.org/grpc"
  9. gcfg "gopkg.in/gcfg.v1"
  10. )
  11. type Config struct {
  12. Grpc struct {
  13. Listen string // ip:port
  14. }
  15. Kafka struct {
  16. Enabled bool
  17. Broker string
  18. }
  19. }
  20. func main() {
  21. var config Config
  22. err := gcfg.ReadFileInto(&config, "config")
  23. if err != nil {
  24. log.Fatal(err)
  25. }
  26. log.Print("config read")
  27. log.Printf("%+v", config)
  28. // init bingomanager
  29. brokers := []string{}
  30. if config.Kafka.Enabled {
  31. brokers = strings.Split(config.Kafka.Broker, ",")
  32. }
  33. bingomanager := bm.NewBingoManager(brokers)
  34. log.Print("bingomanager initialized")
  35. // init GrpcServer
  36. lis, err := net.Listen("tcp", config.Grpc.Listen)
  37. if err != nil {
  38. log.Fatalf("failed to listen: %v", err)
  39. }
  40. grpcServer := grpc.NewServer()
  41. gamelangBingopb.RegisterBingoServiceServer(grpcServer, bm.NewBingoServer(bingomanager))
  42. grpcServer.Serve(lis)
  43. }