1
This commit is contained in:
parent
acc4ae8a67
commit
5da25c735d
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
@ -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,
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user