This commit is contained in:
azw 2023-04-25 03:20:09 +00:00
parent acc4ae8a67
commit 5da25c735d
6 changed files with 32 additions and 14 deletions

View File

@ -37,7 +37,8 @@ public:
p->msgid, p->msgid,
p->seqid, p->seqid,
&buf[offset + sizeof(f8::PackHead)], &buf[offset + sizeof(f8::PackHead)],
p->packlen); p->packlen,
ST_Tcp);
offset += sizeof(f8::PackHead) + p->packlen; offset += sizeof(f8::PackHead) + p->packlen;
} else { } else {
warning = true; warning = true;

View File

@ -40,6 +40,7 @@ struct MsgNode
long ip_saddr; long ip_saddr;
char* buf; char* buf;
int buflen; int buflen;
int tag;
MsgNode* next; MsgNode* next;
}; };
@ -227,7 +228,8 @@ void App::AddSocketMsg(SocketFrom_e sockfrom,
unsigned short msgid, unsigned short msgid,
unsigned int seqid, unsigned int seqid,
const char *msgbody, const char *msgbody,
int bodylen) int bodylen,
int tag)
{ {
MsgNode *p = (MsgNode*)malloc(sizeof(MsgNode)); MsgNode *p = (MsgNode*)malloc(sizeof(MsgNode));
memset(p, 0, sizeof(MsgNode)); memset(p, 0, sizeof(MsgNode));
@ -238,6 +240,7 @@ void App::AddSocketMsg(SocketFrom_e sockfrom,
p->seqid = seqid; p->seqid = seqid;
p->buf = nullptr; p->buf = nullptr;
p->buflen = bodylen; p->buflen = bodylen;
p->tag = tag;
if (bodylen > 0) { if (bodylen > 0) {
p->buf = (char*)malloc(bodylen); p->buf = (char*)malloc(bodylen);
memmove(p->buf, msgbody, bodylen); memmove(p->buf, msgbody, bodylen);
@ -350,17 +353,17 @@ void App::DispatchMsg()
switch (pdelnode->sockfrom) { switch (pdelnode->sockfrom) {
case SF_Client: case SF_Client:
{ {
ProcessClientMsg(hdr); ProcessClientMsg(hdr, pdelnode->tag);
} }
break; break;
case SF_TargetServer: case SF_TargetServer:
{ {
ProcessTargetServerMsg(hdr); ProcessTargetServerMsg(hdr, pdelnode->tag);
} }
break; break;
case SF_MasterServer: case SF_MasterServer:
{ {
ProcessMasterServerMsg(hdr); ProcessMasterServerMsg(hdr, pdelnode->tag);
} }
break; break;
} }
@ -379,7 +382,7 @@ void App::DispatchMsg()
} }
} }
void App::ProcessClientMsg(f8::MsgHdr& hdr) void App::ProcessClientMsg(f8::MsgHdr& hdr, int tag)
{ {
if (hdr.msgid == ss::_SS_CMLogin || if (hdr.msgid == ss::_SS_CMLogin ||
hdr.msgid == ss::_SS_CMReconnect || hdr.msgid == ss::_SS_CMReconnect ||
@ -438,14 +441,19 @@ void App::ProcessClientMsg(f8::MsgHdr& hdr)
} else { } else {
auto down_wp = DownStreamMgr::Instance()->GetDownStream(hdr.socket_handle); auto down_wp = DownStreamMgr::Instance()->GetDownStream(hdr.socket_handle);
if (auto down = down_wp.lock(); !down_wp.expired()) { if (auto down = down_wp.lock(); !down_wp.expired()) {
if (!down->GetUpStream().expired()) { bool need_sync_up = true;
#if 0
if (hdr.msgid == ss::_SS_CMPing && down->IsLongSession()) {
}
#endif
if (!down->GetUpStream().expired() && need_sync_up) {
down->GetUpStream().lock()->ForwardClientMsg(hdr); down->GetUpStream().lock()->ForwardClientMsg(hdr);
} }
} }
} }
} }
void App::ProcessMasterServerMsg(f8::MsgHdr& hdr) void App::ProcessMasterServerMsg(f8::MsgHdr& hdr, int tag)
{ {
f8::NetMsgHandler* handler = f8::GetNetMsgHandler(&HandlerMgr::Instance()->msmsghandler, f8::NetMsgHandler* handler = f8::GetNetMsgHandler(&HandlerMgr::Instance()->msmsghandler,
hdr.msgid); hdr.msgid);
@ -458,7 +466,7 @@ void App::ProcessMasterServerMsg(f8::MsgHdr& hdr)
} }
} }
void App::ProcessTargetServerMsg(f8::MsgHdr& hdr) void App::ProcessTargetServerMsg(f8::MsgHdr& hdr, int tag)
{ {
if (hdr.msgid == ss::_SS_ForceCloseSocket) { if (hdr.msgid == ss::_SS_ForceCloseSocket) {
GCListener::Instance()->ForceCloseClient(hdr.socket_handle); GCListener::Instance()->ForceCloseClient(hdr.socket_handle);

View File

@ -32,7 +32,8 @@ public:
unsigned short msgid, unsigned short msgid,
unsigned int seqid, unsigned int seqid,
const char *msgbody, const char *msgbody,
int bodylen); int bodylen,
int tag = ST_Tcp);
void AddUdpMsg(a8::UdpPacket* pkt); void AddUdpMsg(a8::UdpPacket* pkt);
@ -54,9 +55,9 @@ private:
void DispatchMsg(); void DispatchMsg();
void DispatchUdpMsg(); void DispatchUdpMsg();
void ProcessClientMsg(f8::MsgHdr& hdr); void ProcessClientMsg(f8::MsgHdr& hdr, int tag);
void ProcessMasterServerMsg(f8::MsgHdr& hdr); void ProcessMasterServerMsg(f8::MsgHdr& hdr, int tag);
void ProcessTargetServerMsg(f8::MsgHdr& hdr); void ProcessTargetServerMsg(f8::MsgHdr& hdr, int tag);
void InitLog(); void InitLog();
void UnInitLog(); void UnInitLog();

View File

@ -7,6 +7,12 @@ enum SocketFrom_e
SF_MasterServer, SF_MasterServer,
}; };
enum SocketTag_e
{
ST_Tcp = 1,
ST_Udp,
};
enum InnerMesssage_e enum InnerMesssage_e
{ {
IM_ClientSocketDisconnect = 100, IM_ClientSocketDisconnect = 100,

View File

@ -11,6 +11,7 @@ class DownStream
int GetSocketHandle() const { return socket_handle_; } int GetSocketHandle() const { return socket_handle_; }
std::weak_ptr<UpStream> GetUpStream() const { return up_; } std::weak_ptr<UpStream> GetUpStream() const { return up_; }
void ReBindUpStream(std::weak_ptr<UpStream> up); void ReBindUpStream(std::weak_ptr<UpStream> up);
bool IsLongSession() { return is_long_session_; }
void ForwardUpStreamMsg(f8::MsgHdr& hdr); void ForwardUpStreamMsg(f8::MsgHdr& hdr);
void OnClose(); void OnClose();

View File

@ -99,7 +99,8 @@ void KcpSession::DecodeUserPacket(char* buf, int& offset, unsigned int buflen)
p->msgid, p->msgid,
p->seqid, p->seqid,
&buf[offset + sizeof(f8::PackHead) + GetSecretKeyLen()], &buf[offset + sizeof(f8::PackHead) + GetSecretKeyLen()],
p->packlen); p->packlen,
ST_Udp);
offset += sizeof(f8::PackHead) + p->packlen + GetSecretKeyLen(); offset += sizeof(f8::PackHead) + p->packlen + GetSecretKeyLen();
} else { } else {
warning = true; warning = true;