3 Star 1 Fork 0

NightTC/Gobige

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Entities_MsgProc.go 5.76 KB
一键复制 编辑 原始数据 按行查看 历史
buguang 提交于 2023-05-15 17:08 . Entity的创建与销毁
package entity
import (
"gitee.com/night-tc/gobige/global"
"gitee.com/night-tc/gobige/logger"
"gitee.com/night-tc/gobige/msgdef/protomsg"
)
type EntitiesMsgProc struct {
IEntities
}
func (es *EntitiesMsgProc) MsgProc_CreateEntityReqSrv(msg *protomsg.CreateEntityReqSrv) {
es.CreateEntity(msg.EntityType, msg.EntityID, msg.DBID, false)
msgRet := &protomsg.CreateEntityRetSrv{
CreateEntityID: msg.EntityID,
CallbackID: 0,
ResultMsg: &protomsg.CodeRet{
Code: 0,
CodeMessage: "",
},
}
if err := global.GetSrvInst().PostMsgToEntity(msg.SrcSrvID, msg.SrcSpaceID, msg.SrcEntityID, msgRet); err != nil {
logger.Error(err)
}
}
func (es *EntitiesMsgProc) MsgProc_CreateEntityRetSrv(msg *protomsg.CreateEntityRetSrv) {
//其实不需要做什么
}
func (es *EntitiesMsgProc) MsgProc_DestroyEntityReqSrv(msg *protomsg.DestroyEntityReqSrv) {
//删成员
es.DestroyEntity(msg.EntityID)
msgRet := &protomsg.DestroyEntityRetSrv{
DestroyEntityID: msg.EntityID,
CallbackID: msg.CallbackID,
ResultMsg: &protomsg.CodeRet{
Code: 0,
CodeMessage: "",
},
}
if err := global.GetSrvInst().PostMsgToEntity(msg.SrcSrvID, msg.SrcSpaceID, msg.SrcEntityID, msgRet); err != nil {
logger.Error(err)
}
}
func (es *EntitiesMsgProc) MsgPorc_DestroyEntityRetSrv(msg *protomsg.DestroyEntityRetSrv) {
//删成功后的回复
emd := es.GetEntity(msg.DestroyEntityID)
if emd == nil {
return
}
//需要刷一下entity在redis里的路由信息
}
// // MsgProc_EntityMsgTransport Entity之间转发消息
// func (es *EntitiesMsgProc) MsgProc_EntityMsgTransport(content msgdef.IMsg) {
// msg := content.(*msgdef.EntityMsgTransport)
// ie := es.GetEntity(msg.EntityID)
// if ie == nil {
// return
// }
// es.sendEntityMsg(ie, msg)
// }
// // MsgProc_CreateEntityReq 请求创建Entity
// func (es *EntitiesMsgProc) MsgProc_CreateEntityReq(content msgdef.IMsg) {
// msg := content.(*msgdef.CreateEntityReq)
// params := serializer.UnSerialize(msg.InitParam)
// if len(params) != 1 {
// logger.Error("Init param error ", params)
// return
// }
// es.CreateEntity(msg.EntityType, msg.EntityID, msg.DBID, false, params...)
// msgRet := &msgdef.CreateEntityRet{
// EntityID: msg.EntityID,
// SrvType: global.GetCfgInst().GetSrvType(),
// SrvID: uint64(global.GetCfgInst().GetServerID()),
// CallbackID: 0,
// ErrorStr: "",
// }
// if err := global.GetSrvInst().PostMsgToSpace(msg.SrcSrvID, 0, msgRet); err != nil {
// logger.Error(err)
// }
// }
// // MsgProc_CreateEntityRet 请求创建Entity返回
// func (es *EntitiesMsgProc) MsgProc_CreateEntityRet(content msgdef.IMsg) {
// msg := content.(*msgdef.CreateEntityRet)
// e := es.GetEntity(msg.EntityID)
// if e == nil {
// return
// }
// //应该不需要
// // e.GetEntitySrvID(msg.SrvType)
// // if es.GetTypeIsInRegMap(msg.SrvType) {
// // es.RegEntityGroup(strconv.FormatUint(msg.SrvID, 10), e)
// // }
// }
// // MsgProc_DestroyEntityReq 请求删除Entity
// func (es *EntitiesMsgProc) MsgProc_DestroyEntityReq(content msgdef.IMsg) {
// msg := content.(*msgdef.DestroyEntityReq)
// es.DestroyEntity(msg.EntityID)
// msgRet := &msgdef.DestroyEntityRet{
// EntityID: msg.EntityID,
// SrvType: global.GetCfgInst().GetSrvType(),
// SrvID: uint64(global.GetCfgInst().GetServerID()),
// CallbackID: 0,
// ErrorStr: "",
// TarSrvID: msg.TarSrvID,
// }
// if err := global.GetSrvInst().PostMsgToSpace(msg.SrcSrvID, 0, msgRet); err != nil {
// logger.Error(err)
// }
// }
// // DestroyEntityRet 请求删除Entity返回
// func (es *EntitiesMsgProc) MsgProc_DestroyEntityRet(content msgdef.IMsg) {
// msg := content.(*msgdef.DestroyEntityRet)
// e := es.GetEntity(msg.EntityID)
// if e == nil {
// return
// }
// // if es.GetTypeIsInRegMap(msg.SrvType) {
// // es.UnRegEntityGroup(strconv.FormatUint(msg.SrvID, 10), e)
// // }
// if msg.TarSrvID != 0 {
// // 创建tar中的entity
// msgRt := &msgdef.CreateEntityReq{
// EntityType: e.GetType(),
// EntityID: msg.EntityID,
// SpaceID: 0,
// // InitParam: serializer.Serialize(e.GetInitParam()),
// DBID: e.GetDBID(),
// SrcSrvType: global.GetCfgInst().GetSrvType(),
// SrcSrvID: uint64(global.GetCfgInst().GetServerID()),
// CallbackID: 0,
// }
// if err := global.GetSrvInst().PostMsgToSpace(msg.TarSrvID, 0, msgRt); err != nil {
// logger.Error(err)
// return
// }
// }
// }
// // 发消息
// func (es *EntitiesMsgProc) MsgProc_SrvMsgTransport(content msgdef.IMsg) {
// msg := content.(*msgdef.SrvMsgTransport)
// innerMsg, err := sess.DecodeMsg(msg.MsgContent[3], msg.MsgContent[4:])
// if err != nil {
// logger.Error(err, "msg", sess.GetMsgID(msg.MsgContent[4:]))
// return
// }
// es.FireMsg(innerMsg.Name(), innerMsg)
// }
// // 把分组消息投递到一个服务器里
// func (es *EntitiesMsgProc) MsgProc_SrvGroupMsgTransport(content msgdef.IMsg) {
// msg := content.(*msgdef.SrvGroupMsgTransport)
// es.RangeByGroup(msg.Group, func(k, v any) bool {
// e := v.(IEntity)
// if e.GetEntityState() != Entity_State_Loop {
// return true
// }
// es.sendEntityMsg(e, msg)
// return true
// })
// }
// // 发消息给对应的IEntity
// func (es *EntitiesMsgProc) sendEntityMsg(e IEntity, msg msgdef.ITransportMsg) {
// if msg.GetSrvType() == global.ServerTypeClient {
// if sess := e.(IEntityReal).GetClientSess(); sess != nil {
// sess.SendBuf(msg.GetMsgContent())
// }
// } else {
// innerMsg, err := sess.DecodeMsg(msg.GetMsgContent()[3], msg.GetMsgContent()[4:])
// if err != nil {
// logger.Error(" Decode innerMsg failed", err, msg)
// return
// }
// if !global.GetSrvInst().IsSrvValid() {
// global.GetSrvInst().HandlerSrvInvalid(e.GetID())
// } else {
// e.FireMsg(innerMsg.Name(), innerMsg)
// }
// }
// }
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/night-tc/gobige.git
git@gitee.com:night-tc/gobige.git
night-tc
gobige
Gobige
72396ee52aee

搜索帮助