github.com/lei006/gmqtt-broker@v0.0.1/main.go (about)

     1  package main
     2  
     3  import (
     4  	"os"
     5  	"os/signal"
     6  
     7  	"github.com/lei006/gmqtt-broker/broker"
     8  	"github.com/lei006/gmqtt-broker/logger"
     9  	"go.uber.org/zap"
    10  )
    11  
    12  var log = logger.Get()
    13  
    14  func main() {
    15  	config, err := broker.ConfigureConfig(os.Args[1:])
    16  	if err != nil {
    17  		log.Fatal("configure broker config error", zap.Error(err))
    18  	}
    19  
    20  	b, err := broker.NewBroker(config)
    21  	if err != nil {
    22  		log.Fatal("New Broker error: ", zap.Error(err))
    23  	}
    24  	b.StartServer(":1883")
    25  
    26  	s := waitForSignal()
    27  	log.Info("signal received, broker closed.", zap.Any("signal", s))
    28  }
    29  
    30  func waitForSignal() os.Signal {
    31  	signalChan := make(chan os.Signal, 1)
    32  	defer close(signalChan)
    33  	signal.Notify(signalChan, os.Kill, os.Interrupt)
    34  	s := <-signalChan
    35  	signal.Stop(signalChan)
    36  	return s
    37  }