Files
mir_server/server/LogicServer/CrossServer/CrossDataHandle.h

121 lines
3.3 KiB
C
Raw Permalink Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _SESSION_HANDLE_H_
#define _SESSION_HANDLE_H_
/*****************************************************************
            Copyright (c) 2021, 
                    All rights reserved
       
      20210428 1401
      CrossDataHandle.h
          
    
      1.00
          
         
*****************************************************************/
using namespace wylib::sync::lock;
class CCrossServerManager;
class CCrossServer;
class ISessionRequestHost
{
public:
/*
* Comments:
* Param const jxSrvDef::INTERSRVCMD nCmd:
* @Return CDataPacket&:
* @Remark:
*/
virtual CDataPacket& AllocDataPacket(const jxSrvDef::INTERSRVCMD nCmd) = 0;
/*
* Comments:
* Param CDataPacket &packet
* @Return void:
* @Remark:
*/
virtual void FlushDataPacket(CDataPacket &packet) = 0;
};
using namespace jxSrvDef;
class CCrossDataHandle :public ISessionRequestHost
{
friend class CCrossServer;
protected:
//VOID ProcessRecvBuffers(PDATABUFFER pDataBuffer);
VOID DispatchRecvMsg(CDataPacketReader & reader);
//VOID SendKeepAlive();
//实现虚接口
VOID OnPacket(const jxSrvDef::INTERSRVCMD nCmd, CDataPacketReader &inPacket);
public:
CCrossDataHandle( );
~CCrossDataHandle();
void SetParam(CCrossServer *pSessionSrv, bool isSessonConnect );
//获取服务器的id
inline int GetServerId()
{
return m_nSelfServerId;
}
/*
* Comments:
* Param CatchDefaultPacket:
* Param & inPacket:
* @Return VOID:
* @Remark:
*/
VOID CatchRequestTransmit(CDataPacketReader &inPacket) {};
/*
* Comments:
* Param CDataPacketReader & inPacket:
* @Return VOID:
* @Remark:
*/
VOID CatchGroupMessage(CDataPacketReader &inPacket) {};
// VOID BroadcastMessage2Logic(CDataPacketReader &inPacket);
VOID BroadcastMessage2Logic(const INT_PTR nServerIndex, LPCSTR sMsg, const size_t dwSize);
/*
* Comments:
* Param CDataPacketReader & inPacket:
* @Return VOID:
* @Remark:
*/
VOID CatchSaveCsRank(CDataPacketReader &inPacket) {};
/*
* Comments:
* Param CDataPacketReader & inPacket:
* @Return VOID:
* @Remark:
*/
VOID CatchLoadCsRank(CDataPacketReader &inPacket) {};
public:
static const size_t MaxSSDataSize = 4096;//向会话服务器发送的单个数据包大小的最大值
static const size_t MaxForwardLogicDataSize = 40960; // 最大数据包为40k
char *m_pForwardDataBuff; // 公共逻辑服务器SessionClient用于转发公共服务器消息的Buff长度固定MaxForwardLogicDataSize
private:
int m_nSelfServerId; //自身的服务器ID,用于数据转发
CCrossServer* m_pSSServer; //所属会话服务器
TICKCOUNT m_dwDisconnectedTick;//断开连接的时间
char m_sTrServerIndex[24] ; //格式化的服务器的index用于连接的时候快速计算
bool m_bIsCrossSession; //是否是跨服的会话传输的client跨服的会话有些东西要特殊处理下
};
#endif