实现网关服务器不同版本客户端协议代理功能

This commit is contained in:
flswld
2022-12-25 00:42:07 +08:00
parent f4614b3df6
commit e96e9e3d3c
11 changed files with 374 additions and 36 deletions

View File

@@ -4,6 +4,7 @@ import (
"bytes"
"context"
"encoding/binary"
"reflect"
"strconv"
"sync"
"time"
@@ -12,6 +13,7 @@ import (
"hk4e/common/mq"
"hk4e/common/region"
"hk4e/common/rpc"
"hk4e/gate/client_proto"
"hk4e/gate/kcp"
"hk4e/node/api"
"hk4e/pkg/logger"
@@ -22,18 +24,20 @@ import (
const PacketFreqLimit = 1000
type KcpConnectManager struct {
discovery *rpc.DiscoveryClient
openState bool
sessionConvIdMap map[uint64]*Session
sessionUserIdMap map[uint32]*Session
sessionMapLock sync.RWMutex
kcpEventInput chan *KcpEvent
kcpEventOutput chan *KcpEvent
cmdProtoMap *cmd.CmdProtoMap
messageQueue *mq.MessageQueue
localMsgOutput chan *ProtoMsg
createSessionChan chan *Session
destroySessionChan chan *Session
discovery *rpc.DiscoveryClient
openState bool
sessionConvIdMap map[uint64]*Session
sessionUserIdMap map[uint32]*Session
sessionMapLock sync.RWMutex
kcpEventInput chan *KcpEvent
kcpEventOutput chan *KcpEvent
serverCmdProtoMap *cmd.CmdProtoMap
clientCmdProtoMap *client_proto.ClientCmdProtoMap
clientCmdProtoMapRefValue reflect.Value
messageQueue *mq.MessageQueue
localMsgOutput chan *ProtoMsg
createSessionChan chan *Session
destroySessionChan chan *Session
// 密钥相关
dispatchKey []byte
signRsaKey []byte
@@ -48,7 +52,9 @@ func NewKcpConnectManager(messageQueue *mq.MessageQueue, discovery *rpc.Discover
r.sessionUserIdMap = make(map[uint32]*Session)
r.kcpEventInput = make(chan *KcpEvent, 1000)
r.kcpEventOutput = make(chan *KcpEvent, 1000)
r.cmdProtoMap = cmd.NewCmdProtoMap()
r.serverCmdProtoMap = cmd.NewCmdProtoMap()
r.clientCmdProtoMap = client_proto.NewClientCmdProtoMap()
r.clientCmdProtoMapRefValue = reflect.ValueOf(r.clientCmdProtoMap)
r.messageQueue = messageQueue
r.localMsgOutput = make(chan *ProtoMsg, 1000)
r.createSessionChan = make(chan *Session, 1000)