mirror of
https://github.com/duanhf2012/origin.git
synced 2026-05-20 08:17:29 +08:00
调整协议
This commit is contained in:
@@ -12,22 +12,59 @@ type TcpSocketPbService struct {
|
|||||||
service.BaseService
|
service.BaseService
|
||||||
listenaddr string
|
listenaddr string
|
||||||
tcpsocketserver network.TcpSocketServer
|
tcpsocketserver network.TcpSocketServer
|
||||||
mapMsg map[uint16]MessageInfo
|
MsgProcessor
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
type MessageHandler func(clientid uint64,msgtype uint16,msg proto.Message)
|
||||||
|
type MessageRecvHandler func(pClient *network.SClient,pPack *network.MsgBasePack)
|
||||||
|
type EventHandler func(clientid uint64)
|
||||||
|
type ExceptMsgHandler func(clientid uint64,pPack *network.MsgBasePack,err error)
|
||||||
|
|
||||||
|
type MsgProcessor struct {
|
||||||
|
mapMsg map[uint16]MessageInfo
|
||||||
connEvent EventHandler
|
connEvent EventHandler
|
||||||
disconnEvent EventHandler
|
disconnEvent EventHandler
|
||||||
|
|
||||||
exceptMsgHandler ExceptMsgHandler
|
exceptMsgHandler ExceptMsgHandler
|
||||||
messageRecvHandler MessageRecvHandler
|
messageRecvHandler MessageRecvHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type MessageHandler func(clientid uint64,msgtype uint16,msg proto.Message)
|
|
||||||
type MessageRecvHandler func(clientid uint64,pPack *network.MsgBasePack)
|
|
||||||
type EventHandler func(clientid uint64)
|
|
||||||
type ExceptMsgHandler func(clientid uint64,pPack *network.MsgBasePack,err error)
|
|
||||||
|
|
||||||
|
|
||||||
|
func (slf *MsgProcessor) RegMessage(msgtype uint16,msg proto.Message,handle MessageHandler){
|
||||||
|
var info MessageInfo
|
||||||
|
|
||||||
|
info.msgType = reflect.TypeOf(msg.(proto.Message))
|
||||||
|
info.msgHandler = handle
|
||||||
|
slf.mapMsg[msgtype] = info
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *MsgProcessor) RegConnectEvent(eventHandler EventHandler){
|
||||||
|
slf.connEvent = eventHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *MsgProcessor) RegDisconnectEvent(eventHandler EventHandler){
|
||||||
|
slf.disconnEvent = eventHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *MsgProcessor) RegExceptMessage(exceptMsgHandler ExceptMsgHandler){
|
||||||
|
slf.exceptMsgHandler = exceptMsgHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *MsgProcessor) RegRecvMessage(msgHandler MessageRecvHandler){
|
||||||
|
slf.messageRecvHandler = msgHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *MsgProcessor) OnExceptMsg (pClient *network.SClient,pPack *network.MsgBasePack,err error){
|
||||||
|
if slf.exceptMsgHandler!=nil {
|
||||||
|
slf.exceptMsgHandler(pClient.GetId(),pPack,err)
|
||||||
|
}else{
|
||||||
|
pClient.Close()
|
||||||
|
//记录日志
|
||||||
|
service.GetLogger().Printf(service.LEVER_WARN, "OnExceptMsg packtype %d,error %+v",pPack.PackType,err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func NewTcpSocketPbService(listenaddr string) *TcpSocketPbService {
|
func NewTcpSocketPbService(listenaddr string) *TcpSocketPbService {
|
||||||
ts := new(TcpSocketPbService)
|
ts := new(TcpSocketPbService)
|
||||||
@@ -45,18 +82,6 @@ func (slf *TcpSocketPbService) OnInit() error {
|
|||||||
func (slf *TcpSocketPbService) OnRun() bool {
|
func (slf *TcpSocketPbService) OnRun() bool {
|
||||||
slf.tcpsocketserver.Start()
|
slf.tcpsocketserver.Start()
|
||||||
|
|
||||||
/*
|
|
||||||
slf.RegisterMessage(10,&msgpb.Test{},slf.Test)
|
|
||||||
var testpack network.MsgBasePack
|
|
||||||
a := msgpb.Test{}
|
|
||||||
a.WinCount =proto.Int32(33)
|
|
||||||
d,err := proto.Marshal(&a)
|
|
||||||
fmt.Print(err)
|
|
||||||
|
|
||||||
testpack.Make(10,d)
|
|
||||||
slf.OnRecvMsg(nil,&testpack)
|
|
||||||
|
|
||||||
*/
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,22 +100,6 @@ func (slf *TcpSocketPbService) RegMessage(msgtype uint16,msg proto.Message,handl
|
|||||||
slf.mapMsg[msgtype] = info
|
slf.mapMsg[msgtype] = info
|
||||||
}
|
}
|
||||||
|
|
||||||
func (slf *TcpSocketPbService) RegConnectEvent(eventHandler EventHandler){
|
|
||||||
slf.connEvent = eventHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *TcpSocketPbService) RegDisconnectEvent(eventHandler EventHandler){
|
|
||||||
slf.disconnEvent = eventHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *TcpSocketPbService) RegExceptMessage(exceptMsgHandler ExceptMsgHandler){
|
|
||||||
slf.exceptMsgHandler = exceptMsgHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *TcpSocketPbService) RegRecvMessage(msgHandler MessageRecvHandler){
|
|
||||||
slf.messageRecvHandler = msgHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func (slf *TcpSocketPbService) OnConnected(pClient *network.SClient){
|
func (slf *TcpSocketPbService) OnConnected(pClient *network.SClient){
|
||||||
if slf.connEvent!=nil {
|
if slf.connEvent!=nil {
|
||||||
@@ -103,24 +112,12 @@ func (slf *TcpSocketPbService) OnDisconnect(pClient *network.SClient){
|
|||||||
slf.disconnEvent(pClient.GetId())
|
slf.disconnEvent(pClient.GetId())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (slf *TcpSocketPbService) VerifyPackType(packtype uint16) bool{
|
func (slf *TcpSocketPbService) VerifyPackType(packtype uint16) bool{
|
||||||
_,ok := slf.mapMsg[packtype]
|
_,ok := slf.mapMsg[packtype]
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (slf *MsgProcessor) Handle(pClient *network.SClient,pPack *network.MsgBasePack){
|
||||||
func (slf *TcpSocketPbService) OnExceptMsg (pClient *network.SClient,pPack *network.MsgBasePack,err error){
|
|
||||||
if slf.exceptMsgHandler!=nil {
|
|
||||||
slf.exceptMsgHandler(pClient.GetId(),pPack,err)
|
|
||||||
}else{
|
|
||||||
pClient.Close()
|
|
||||||
//记录日志
|
|
||||||
service.GetLogger().Printf(service.LEVER_WARN, "OnExceptMsg packtype %d,error %+v",pPack.PackType,err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (slf *TcpSocketPbService) OnRecvMsg(pClient *network.SClient, pPack *network.MsgBasePack){
|
|
||||||
if info, ok := slf.mapMsg[pPack.PackType]; ok {
|
if info, ok := slf.mapMsg[pPack.PackType]; ok {
|
||||||
msg := reflect.New(info.msgType.Elem()).Interface()
|
msg := reflect.New(info.msgType.Elem()).Interface()
|
||||||
tmp := msg.(proto.Message)
|
tmp := msg.(proto.Message)
|
||||||
@@ -133,13 +130,16 @@ func (slf *TcpSocketPbService) OnRecvMsg(pClient *network.SClient, pPack *networ
|
|||||||
info.msgHandler(pClient.GetId(),pPack.PackType, msg.(proto.Message))
|
info.msgHandler(pClient.GetId(),pPack.PackType, msg.(proto.Message))
|
||||||
return
|
return
|
||||||
}else if slf.messageRecvHandler!=nil {
|
}else if slf.messageRecvHandler!=nil {
|
||||||
slf.messageRecvHandler(pClient.GetId(),pPack)
|
slf.messageRecvHandler(pClient,pPack)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
slf.OnExceptMsg(pClient,pPack,errors.New("not found PackType"))
|
slf.OnExceptMsg(pClient,pPack,errors.New("not found PackType"))
|
||||||
|
}
|
||||||
|
|
||||||
return
|
|
||||||
|
func (slf *TcpSocketPbService) OnRecvMsg(pClient *network.SClient, pPack *network.MsgBasePack){
|
||||||
|
slf.Handle(pClient,pPack)
|
||||||
}
|
}
|
||||||
|
|
||||||
func DefaultTSPbService() *TcpSocketPbService{
|
func DefaultTSPbService() *TcpSocketPbService{
|
||||||
|
|||||||
Reference in New Issue
Block a user