| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package main
- import (
- "encoding/json"
- "git.wanbits.io/joe/franklin/comp"
- pb "git.wanbits.io/joe/franklin/protos"
- "git.wanbits.io/joe/kettle/htp"
- "git.wanbits.io/joe/kettle/log"
- "git.wanbits.io/joe/kettle/utl"
- "git.wanbits.io/joe/nnet/cpn"
- "github.com/coreos/etcd/clientv3"
- "github.com/gin-gonic/gin"
- "go.uber.org/zap"
- "net/http"
- "syscall"
- "time"
- )
- func main() {
- var err error
- comp.InitEnv("agent.toml", "agent.toml")
- // load conf
- g_conf, err = comp.LoadConf(comp.GConfile)
- utl.ErrPanic(err)
- // connect etcd
- // connect redis
- // connect mq
- // connect evbus
- comp.InitAll(g_conf)
- // connect to login
- loginconf, err := comp.GEtcdc.Get(comp.PathLogin(g_conf))
- utl.ErrPanic(err)
- if len(loginconf.Kvs) <= 0 {
- utl.ErrPanic(utl.ErrContainerEmpty)
- }
- var loginConf pb.LoginConfConf
- err = json.Unmarshal(loginconf.Kvs[0].Value, &loginConf)
- utl.ErrPanic(err)
- g_rabbitProto = NewRabbitCProtocol()
- g_rabbit = cpn.NewWsClient(&hubConfC, g_rabbitProto, g_rabbitProto, cpn.WithReconn(3*time.Second))
- err = g_rabbit.NewConnection(loginConf.Addrs[0], g_conf.Id)
- utl.UnUsed(err)
- // connect to lobbies
- lobJs, err := comp.GEtcdc.Get(comp.PathLobbies(g_conf), clientv3.WithPrefix())
- utl.ErrPanic(err)
- lobProto := ALProtocol{}
- g_taj = cpn.NewTcpClient(&hubConfC, &lobProto, &lobProto, cpn.WithReconn(3*time.Second))
- var lobConf pb.AppConfConf
- for _, conf := range lobJs.Kvs {
- err = json.Unmarshal(conf.Value, &lobConf)
- utl.ErrPanic(err)
- err = g_taj.NewConnection(lobConf.Addr, lobConf.Id)
- utl.UnUsed(err)
- }
- // connect to logics
- lgcJs, err := comp.GEtcdc.Get(comp.PathLogics(g_conf), clientv3.WithPrefix())
- utl.ErrPanic(err)
- lgcProto := ALProtocol{}
- g_logics = cpn.NewTcpClient(&hubConfC, &lgcProto, &lgcProto, cpn.WithReconn(3*time.Second))
- var lgcConf pb.AppConfConf
- for _, conf := range lgcJs.Kvs {
- err = json.Unmarshal(conf.Value, &lgcConf)
- utl.ErrPanic(err)
- err = g_logics.NewConnection(lgcConf.Addr, lobConf.Id)
- utl.UnUsed(err)
- }
- // start rpc
- comp.GRpc = htp.NewGinServer(g_conf.RpcAddr, htp.WithCors(true))
- err = comp.GRpc.Start(func(e *gin.Engine) {
- e.POST("/rpc", do_dispatch)
- })
- utl.ErrPanic(err)
- // register self
- // watch etcd
- //comp.GEtcdc.WatchPrefix()
- // start listener
- g_serverProto = &CSProtocol{}
- g_server = cpn.NewWsServer(&hubConfS, g_serverProto, g_serverProto, g_conf.Addr, "/franklin", nil)
- go func() {
- if err = g_server.Start(); err != nil && err != http.ErrServerClosed {
- utl.ErrPanic(err)
- }
- }()
- // wait signal
- sig := utl.WaitForSignals(syscall.SIGINT)
- log.Debug("received signal", zap.String("sig", sig.String()))
- _ = g_server.Stop()
- _ = comp.GRpc.Stop()
- _ = g_logics.Stop()
- _ = g_taj.Stop()
- _ = g_rabbit.Stop()
- comp.GMq.Close()
- comp.GEtcdc.Close()
- _ = comp.GRds.Close()
- comp.GEv.Close()
- log.Sync()
- }
|