ecs/servers/center/server.go

86 lines
2.0 KiB
Go
Raw Permalink Normal View History

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 &centerServer{}
}
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
}