game.go 740 Bytes
package main

import (
	"os"
	"os/signal"
	"pro2d/conf"
	"pro2d/src/components/logger"
	"pro2d/src/components/net"
	_ "pro2d/src/plugin"
	"syscall"
)

func main()  {
	err := make(chan error)
	stopChan := make(chan os.Signal)
	signal.Notify(stopChan, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL)

	userChan := make(chan os.Signal)
	signal.Notify(userChan, syscall.SIGUSR1, syscall.SIGUSR2)

	s := net.NewServer(conf.GlobalConf.GameConf)
	go func() {
		err <- s.Start()
	}()

	for {
		select {
		case e := <- err:
			logger.Error("game server error: %v", e)
			return
		case <-stopChan:
			s.Stop()
			logger.Debug("game stop...")
			return
		case u := <-userChan:
			logger.Debug("userChan .. %v",u.String())
			s.LoadPlugin()
		}
	}
}