2025-06-04 18:17:39 +08:00
|
|
|
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 {
|
2025-07-16 17:34:36 +08:00
|
|
|
server.NamedServer
|
2025-06-04 18:17:39 +08:00
|
|
|
|
|
|
|
InnerServer server.HttpServer
|
|
|
|
|
2025-07-16 17:34:36 +08:00
|
|
|
sdConfig *sd.Config
|
2025-06-04 18:17:39 +08:00
|
|
|
RegisterClient sd.RegisterClient
|
|
|
|
|
|
|
|
centerManager *logic.CenterManager
|
|
|
|
|
|
|
|
innerHandler *handler.InnerHandler
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewCenterServer() server.Server {
|
|
|
|
return ¢erServer{}
|
|
|
|
}
|
|
|
|
|
2025-07-16 17:34:36 +08:00
|
|
|
func (this *centerServer) WithSdConfig(config *sd.Config) {
|
|
|
|
this.sdConfig = config
|
|
|
|
}
|
|
|
|
|
2025-06-04 18:17:39 +08:00
|
|
|
func (this *centerServer) Init() (err error) {
|
2025-07-16 17:34:36 +08:00
|
|
|
err = this.NamedServer.Init()
|
2025-06-04 18:17:39 +08:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2025-07-16 10:05:22 +08:00
|
|
|
this.InnerServer.SetServer(this)
|
2025-06-04 18:17:39 +08:00
|
|
|
err = this.InnerServer.Init()
|
|
|
|
if err != nil {
|
|
|
|
return errors.Errorf("the 'InnerServer' init failed, %v", err)
|
|
|
|
}
|
|
|
|
|
2025-07-16 17:34:36 +08:00
|
|
|
this.RegisterClient = zk.NewRegisterClient(this, this.sdConfig, &this.InnerServer.Listener, nil)
|
2025-06-04 18:17:39 +08:00
|
|
|
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)
|
2025-07-16 17:34:36 +08:00
|
|
|
_ = this.NamedServer.Close()
|
2025-06-04 18:17:39 +08:00
|
|
|
return nil
|
|
|
|
}
|