110 lines
3.5 KiB
Go
110 lines
3.5 KiB
Go
![]() |
package main
|
||
|
|
||
|
import (
|
||
|
"ecs/servers/event/handler"
|
||
|
"ecs/servers/event/logic"
|
||
|
"github.com/oylshe1314/framework/client/db"
|
||
|
"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 eventServer struct {
|
||
|
server.LoggerServer
|
||
|
|
||
|
InnerServer server.HttpServer
|
||
|
|
||
|
MongoClient db.MongoClient
|
||
|
|
||
|
SdConfig sd.Config
|
||
|
RegisterClient sd.RegisterClient
|
||
|
|
||
|
eventManager *logic.EventManager
|
||
|
|
||
|
innerHandler *handler.InnerHandler
|
||
|
}
|
||
|
|
||
|
func NewEventServer() server.Server {
|
||
|
return &eventServer{}
|
||
|
}
|
||
|
|
||
|
func (this *eventServer) Init() (err error) {
|
||
|
err = this.LoggerServer.Init()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
this.InnerServer.SetLogger(this.Logger())
|
||
|
err = this.InnerServer.Init()
|
||
|
if err != nil {
|
||
|
return errors.Errorf("the 'InnerServer' init failed, %v", err)
|
||
|
}
|
||
|
|
||
|
err = this.MongoClient.Init()
|
||
|
if err != nil {
|
||
|
return errors.Errorf("the 'MysqlClient' init failed, %v", err)
|
||
|
}
|
||
|
|
||
|
this.RegisterClient = zk.NewRegisterClient(&this.SdConfig)
|
||
|
this.RegisterClient.SetLogger(this.Logger())
|
||
|
this.RegisterClient.SetServiceNode(sd.NewServiceNode(this.Name(), this.AppId(), &this.InnerServer.Listener, nil))
|
||
|
err = this.RegisterClient.Init()
|
||
|
if err != nil {
|
||
|
return errors.Errorf("the 'RegisterClient' init failed, %v", err)
|
||
|
}
|
||
|
|
||
|
this.eventManager = logic.NewEventManager(this, &this.MongoClient)
|
||
|
err = this.eventManager.Init()
|
||
|
if err != nil {
|
||
|
return errors.Errorf("the 'eventManager' init failed, %v", err)
|
||
|
}
|
||
|
|
||
|
this.innerHandler = handler.NewInnerHandler(this, this.eventManager)
|
||
|
|
||
|
//Register server event log handler
|
||
|
this.InnerServer.PostHandler("/log/server/operate", this.innerHandler.ServerOperate)
|
||
|
this.InnerServer.PostHandler("/log/server/online", this.innerHandler.ServerOnline)
|
||
|
|
||
|
//Register player event log handler
|
||
|
this.InnerServer.PostHandler("/log/player/common", this.innerHandler.PlayerCommon)
|
||
|
this.InnerServer.PostHandler("/log/player/create", this.innerHandler.PlayerCreate)
|
||
|
this.InnerServer.PostHandler("/log/player/login", this.innerHandler.PlayerLogin)
|
||
|
this.InnerServer.PostHandler("/log/player/charge", this.innerHandler.PlayerCharge)
|
||
|
this.InnerServer.PostHandler("/log/player/level/upgrade", this.innerHandler.PlayerLevelUpgrade)
|
||
|
this.InnerServer.PostHandler("/log/player/item/obtain", this.innerHandler.PlayerItemObtain)
|
||
|
this.InnerServer.PostHandler("/log/player/item/Consume", this.innerHandler.PlayerItemConsume)
|
||
|
this.InnerServer.PostHandler("/log/player/money/obtain", this.innerHandler.PlayerMoneyObtain)
|
||
|
this.InnerServer.PostHandler("/log/player/money/consume", this.innerHandler.PlayerMoneyConsume)
|
||
|
this.InnerServer.PostHandler("/log/player/mail", this.innerHandler.PlayerMailLog)
|
||
|
this.InnerServer.PostHandler("/log/player/task", this.innerHandler.PlayerTaskLog)
|
||
|
this.InnerServer.PostHandler("/log/player/shop", this.innerHandler.PlayerShopLog)
|
||
|
this.InnerServer.PostHandler("/log/player/activity", this.innerHandler.PlayerActivity)
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (this *eventServer) Serve() (err error) {
|
||
|
return util.WaitAny(this.InnerServer.Serve, this.RegisterClient.Work)
|
||
|
}
|
||
|
|
||
|
func (this *eventServer) Close() error {
|
||
|
|
||
|
this.Logger().Info("The 'MysqlClient' is closing")
|
||
|
_ = this.MongoClient.Close()
|
||
|
|
||
|
this.Logger().Info("The 'RegisterClient' 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
|
||
|
}
|