Files
mir_server/server/LogicServer/CrossServer/CrossDataHandle.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

121 lines
3.3 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _SESSION_HANDLE_H_
#define _SESSION_HANDLE_H_
/*****************************************************************
            Copyright (c) 2021, 上海漫方网络科技有限公司
                    All rights reserved
       
    创建日期  2021年04月28日 14时01分
    文件名称  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