package main import ( "ecs/servers/center/handler" "ecs/servers/center/logic" "github.com/oylshe1314/framework/client/sd" "github.com/oylshe1314/framework/client/sd/zk" "github.com/oylshe1314/framework/errors" "github.com/oylshe1314/framework/server" "github.com/oylshe1314/framework/util" "time" ) type centerServer struct { server.LoggerServer InnerServer server.HttpServer SdConfig sd.Config RegisterClient sd.RegisterClient centerManager *logic.CenterManager innerHandler *handler.InnerHandler } func NewCenterServer() server.Server { return ¢erServer{} } func (this *centerServer) Init() (err error) { err = this.LoggerServer.Init() if err != nil { return err } this.InnerServer.SetServer(this) err = this.InnerServer.Init() if err != nil { return errors.Errorf("the 'InnerServer' init failed, %v", err) } this.RegisterClient = zk.NewRegisterClient(&this.SdConfig) this.RegisterClient.SetServer(this) this.RegisterClient.SetListener(&this.InnerServer.Listener, nil) err = this.RegisterClient.Init() if err != nil { return errors.Errorf("the 'RegisterClient' init failed, %v", err) } this.centerManager = logic.NewCenterManager(this) err = this.centerManager.Init() if err != nil { return errors.Errorf("the 'centerManager' init failed, %v", err) } this.innerHandler = handler.NewInnerHandler(this, this.centerManager) this.InnerServer.GetHandler("/wechat/accessToken/get", this.innerHandler.GetWechatAccessToken) this.InnerServer.PostHandler("/wechat/accessToken/refresh", this.innerHandler.RefreshWechatAccessToken) return nil } func (this *centerServer) Serve() error { return util.WaitAny(this.RegisterClient.Work, this.InnerServer.Serve) } func (this *centerServer) Close() error { this.Logger().Info("The 'SubscribeClient' is closing") _ = this.RegisterClient.Close() this.Logger().Info("The 'InnerServer' is closing") _ = this.InnerServer.Close() this.Logger().Info("Server closed") time.Sleep(time.Second) _ = this.LoggerServer.Close() return nil }