refactor(error): 重构错误处理机制,使用ErrorCode枚举替代OutInfo接口
This commit is contained in:
@@ -1,17 +1,23 @@
|
||||
package errorcode
|
||||
|
||||
import "github.com/tnnmigga/enum"
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/tnnmigga/enum"
|
||||
)
|
||||
|
||||
// ErrorCode 错误码枚举类型
|
||||
type ErrorCode uint32
|
||||
|
||||
func (t ErrorCode) Code() string { return fmt.Sprintf("%d", t) }
|
||||
|
||||
// ErrorMap 错误码到错误信息的映射
|
||||
//var ErrorMap = make(map[ErrorCode]ErrorInfo)
|
||||
|
||||
// ErrorCodes 错误码注册表
|
||||
var ErrorCodes = enum.New[struct {
|
||||
// 系统错误码
|
||||
ErrLoginFailed ErrorCode `enum:"10001"` // 登录失败
|
||||
// 登录失败
|
||||
ErrLoginFailed ErrorCode `enum:"10001"`
|
||||
ErrAlreadyLoggedIn ErrorCode `enum:"10004"` // 已在别处登录
|
||||
ErrIllegalLanguage ErrorCode `enum:"10005"` // 使用非法语言
|
||||
ErrUserOffline ErrorCode `enum:"10006"` // 用户离线
|
||||
|
||||
@@ -2,6 +2,7 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/entity"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/common/socket/handler"
|
||||
"blazing/cool"
|
||||
"blazing/logic/service"
|
||||
@@ -208,13 +209,13 @@ func Recv(c *entity.Conn, data handler.TomeeHeader) {
|
||||
return
|
||||
}
|
||||
|
||||
aa, ok := ret[1].Interface().(service.OutInfo) //判断错误
|
||||
aa, ok := ret[1].Interface().(errorcode.ErrorCode) //判断错误
|
||||
|
||||
if ok && aa != nil { //这里实现回复错误包
|
||||
if ok && aa != 0 { //这里实现回复错误包
|
||||
|
||||
cool.Loger.Error(context.Background(), aa.Error(), aa.Code())
|
||||
cool.Loger.Error(context.Background(), aa.Code())
|
||||
|
||||
data.Result = uint32(aa.Code())
|
||||
data.Result = uint32(aa)
|
||||
c.SendPack(data.Pack(nil))
|
||||
return
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/logic/service"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/commendsvr"
|
||||
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
)
|
||||
|
||||
// 处理命令: 105
|
||||
func (h Controller) GetServer(data *commendsvr.SidInfo, c gnet.Conn) (result *commendsvr.CommendSvrInfo, err service.OutInfo) { //这个时候player应该是空的
|
||||
func (h Controller) GetServer(data *commendsvr.SidInfo, c gnet.Conn) (result *commendsvr.CommendSvrInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
result = commendsvr.NewInInfo()
|
||||
result.ServerList = commendsvr.GetServerInfoList()
|
||||
return
|
||||
|
||||
@@ -3,12 +3,13 @@ package controller
|
||||
import (
|
||||
"blazing/common/data/entity"
|
||||
"blazing/common/data/share"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service"
|
||||
"blazing/logic/service/login"
|
||||
)
|
||||
|
||||
// 处理命令: 1001
|
||||
func (h *Controller) Login(data *login.InInfo, c *entity.Conn) (result *login.OutInfo, err service.OutInfo) { //这个时候player应该是空的
|
||||
func (h *Controller) Login(data *login.InInfo, c *entity.Conn) (result *login.OutInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
|
||||
if tt := data.CheakSession(); tt { //说明sid正确
|
||||
h.RPCClient.Kick(data.Head.UserID) //先踢人
|
||||
@@ -19,11 +20,10 @@ func (h *Controller) Login(data *login.InInfo, c *entity.Conn) (result *login.Ou
|
||||
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
|
||||
t.CompleteLogin() //通知客户端登录成功
|
||||
|
||||
|
||||
c.SendPack(data.Def())
|
||||
|
||||
} else {
|
||||
err = &login.LoginErr{}
|
||||
err = errorcode.ErrorCodes.ErrLoginFailed
|
||||
return
|
||||
}
|
||||
return
|
||||
|
||||
@@ -2,11 +2,11 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/entity"
|
||||
"blazing/logic/service"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/maphot"
|
||||
)
|
||||
|
||||
func (h Controller) MapHot(data *maphot.InInfo, c *entity.Player) (result *maphot.OutInfo, err service.OutInfo) {
|
||||
func (h Controller) MapHot(data *maphot.InInfo, c *entity.Player) (result *maphot.OutInfo, err errorcode.ErrorCode) {
|
||||
|
||||
data.Def()
|
||||
result = &maphot.OutInfo{
|
||||
|
||||
@@ -2,11 +2,11 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/entity"
|
||||
"blazing/logic/service"
|
||||
"blazing/common/socket/errorcode"
|
||||
"blazing/logic/service/systemtime"
|
||||
)
|
||||
|
||||
func (h Controller) SystemTimeInfo(data *systemtime.InInfo, c *entity.Player) (result *systemtime.OutInfo, err service.OutInfo) {
|
||||
func (h Controller) SystemTimeInfo(data *systemtime.InInfo, c *entity.Player) (result *systemtime.OutInfo, err errorcode.ErrorCode) {
|
||||
result = systemtime.NewOutInfo()
|
||||
|
||||
return
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
package login
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
)
|
||||
|
||||
type LoginErr struct {
|
||||
}
|
||||
|
||||
func (h *LoginErr) Code() errorcode.ErrorCode {
|
||||
|
||||
return errorcode.ErrorCodes.ErrLoginFailed
|
||||
|
||||
}
|
||||
func (h *LoginErr) Error() string {
|
||||
|
||||
return "登录失败"
|
||||
|
||||
}
|
||||
@@ -58,11 +58,11 @@ func SetPlayer(c *entity.Conn, userid uint32) *entity.Player { //TODO 这里待
|
||||
// return nil
|
||||
}
|
||||
|
||||
/**
|
||||
* @var type OutboundInf
|
||||
* @global
|
||||
*/
|
||||
type OutInfo interface {
|
||||
error //实现错误接口
|
||||
Code() errorcode.ErrorCode //返回错误码,如果error不等于nil就返回这个实现对前台传错误码
|
||||
}
|
||||
// /**
|
||||
// * @var type OutboundInf
|
||||
// * @global
|
||||
// */
|
||||
// type OutInfo interface {
|
||||
// error //实现错误接口
|
||||
// Code() errorcode.ErrorCode //返回错误码,如果error不等于nil就返回这个实现对前台传错误码
|
||||
// }
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
package systemtime
|
||||
|
||||
import "blazing/common/socket/errorcode"
|
||||
|
||||
type TimeErr struct {
|
||||
}
|
||||
|
||||
func (h *TimeErr) Code() errorcode.ErrorCode {
|
||||
|
||||
return errorcode.ErrorCodes.ErrInvalidPassword
|
||||
|
||||
}
|
||||
func (h *TimeErr) Error() string {
|
||||
|
||||
return "登录失败"
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user