📄 netmsg.cpp
字号:
#include "netmsg.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPL_CLASS(CNetMsg,CNetMsg,_MSG_NONE);
CNetMsg::CNetMsg()
{
Init();
}
CNetMsg::~CNetMsg()
{
}
//////////////////////////////////////////////////////////////////////
void CNetMsg::Init()
{
memset(m_bufMsg, 0L, sizeof(m_bufMsg));
m_unMsgSize =0;
m_unMsgType =_MSG_NONE;
}
//////////////////////////////////////////////////////////////////////
BOOL CNetMsg::IsValid(void)
{
if(_MSG_NONE == this->GetType())
return false;
return true;
}
//////////////////////////////////////////////////////////////////////
BOOL CNetMsg::Create(char* pbufMsg, DWORD dwMsgSize)
{
if(!pbufMsg)
return false;
if((unsigned short)dwMsgSize != GetSize(pbufMsg, dwMsgSize))
return false;
if(_MSG_NONE == GetType(pbufMsg, dwMsgSize))
return false;
memcpy(this->m_bufMsg, pbufMsg, dwMsgSize);
return true;
}
//////////////////////////////////////////////////////////////////////
void CNetMsg::Process(void *pInfo)
{
//--------------------
char szMsg[1024];
sprintf(szMsg, "Process Msg:%d, Size:%d", m_unMsgType, m_unMsgSize);
::LogMsg(szMsg);
}
//////////////////////////////////////////////////////////////////////
//void CNetMsg::Send(void)
//{
//#ifdef _MYDEBUG
// ::LogMsg("SendMsg:%d, size:%d", m_unMsgType, m_unMsgSize);
//
//#endif
//
// g_objNetwork.SendMsg(m_bufMsg, m_unMsgSize);
//}
//////////////////////////////////////////////////////////////////////
// static functions;
//////////////////////////////////////////////////////////////////////
unsigned short CNetMsg::GetType(char* pbufMsg, DWORD dwMsgSize)
{
// check it...
assert(pbufMsg);
assert((int)dwMsgSize <= CNetMsg::GetMaxSize());
unsigned short* pUnShort =(unsigned short* )pbufMsg;
return pUnShort[1];
}
//////////////////////////////////////////////////////////////////////
unsigned short CNetMsg::GetSize(char* pbufMsg, DWORD dwMsgSize)
{
// check it...
assert(pbufMsg);
assert((int)dwMsgSize <= CNetMsg::GetMaxSize());
unsigned short* pUnShort =(unsigned short* )pbufMsg;
return pUnShort[0];
}
//////////////////////////////////////////////////////////////////////
CNetMsg* CNetMsg::CreateMsg(char* pbufMsg, DWORD dwMsgSize)
{
// check it...
if(!pbufMsg || (int)dwMsgSize > GetMaxSize())
return NULL;
assert((int)dwMsgSize == CNetMsg::GetSize(pbufMsg, dwMsgSize));
// make it...
CNetMsg* pMsg = new CNetMsg;
//switch(CNetMsg::GetType(pbufMsg,dwMsgSize))
//{
//case _MSG_FUSE:
// pMsg =new CMsgFuse;
// break;
//case _MSG_LOGIN:
// pMsg =new CMsgLogin;
// break;
//case _MSG_TALK:
// pMsg =new CMsgTalk;
// break;
//case _MSG_ACTION:
// pMsg =new CMsgAction;
// break;
//case _MSG_PLAYER:
// pMsg =new CMsgPlayer;
// break;
//case _MSG_TICK:
// pMsg =new CMsgTick;
// break;
//case _MSG_USERINFO:
// pMsg =new CMsgUserInfo;
// break;
//case _MSG_FRIEND:
// pMsg =new CMsgFriend;
// break;
//case _MSG_ITEM:
// pMsg =new CMsgItem;
// break;
//case _MSG_ITEMINFO:
// pMsg =new CMsgItemInfo;
// break;
//case _MSG_INTERACT:
// pMsg =new CMsgInteract;
// break;
//case _MSG_NAME:
// pMsg =new CMsgName;
// break;
//case _MSG_USERATTRIB:
// pMsg =new CMsgUserAttrib;
// break;
//case _MSG_WALK:
// pMsg =new CMsgWalk;
// break;
//case _MSG_MAPITEM:
// pMsg =new CMsgMapItem;
// break;
//case _MSG_TRADE:
// pMsg =new CMsgTrade;
// break;
//case _MSG_NPC:
// pMsg =new CMsgNpc;
// break;
//case _MSG_NPCINFO:
// pMsg =new CMsgNpcInfo;
// break;
//case _MSG_PACKAGE:
// pMsg =new CMsgPackage;
// break;
//case _MSG_WEAPONSKILL:
// pMsg =new CMsgWeaponSkill;
// break;
//case _MSG_ACCOUNT:
// pMsg =new CMsgAccount;
// break;
//case _MSG_CONNECT:
// pMsg =new CMsgConnect;
// break;
//case _MSG_CONNECT_EX:
// pMsg =new CMsgConnectEx;
// break;
//case _MSG_TEAM:
// pMsg =new CMsgTeam;
// break;
//case _MSG_TEAMMEMBER:
// pMsg =new CMsgTeamMember;
// break;
//case _MSG_FLUSHEXP:
// pMsg =new CMsgFlushExp;
// break;
//case _MSG_TASKDIALOG:
// pMsg =new CMsgTaskDialog;
// break;
//case _MSG_MAGICEFFECT:
// pMsg =new CMsgMagicEffect;
// break;
//case _MSG_MAGICINFO:
// pMsg =new CMsgMagicInfo;
// break;
//case _MSG_SYNDICATE:
// pMsg =new CMsgSyndicate;
// break;
//case _MSG_SYNATTRINFO:
// pMsg =new CMsgSyndicateAttributeInfo;
// break;
//case _MSG_WEATHER:
// pMsg = new CMsgWeather;
// break;
//case _MSG_FRIENDINFO:
// pMsg =new CMsgFriendInfo;
// break;
//case _MSG_GEMEMBED:
// pMsg =new CMsgGemEmbed;
// break;
//case _MSG_TIME:
// pMsg =new CMsgTime;
// break;
//case _MSG_ITEMINFOEX:
// pMsg =new CMsgItemInfoEx;
// break;
//case _MSG_NPCINFOEX:
// pMsg =new CMsgNpcInfoEX;
// break;
//case _MSG_MAPINFO:
// pMsg =new CMsgMapInfo;
// break;
//case _MSG_MESSAGEBOARD:
// pMsg =new CMsgMessageBoard;
// break;
//case _MSG_SYNMEMBERINFO:
// pMsg =new CMsgSynMemberInfo;
// break;
//case _MSG_DICE:
// pMsg =new CMsgDice;
// break;
//case _MSG_PETINFO:
// pMsg =new CMsgPetInfo;
// break;
//case _MSG_DATAARRAY:
// pMsg =new CMsgDataArray;
// break;
//case _MSG_TEAMAWARD:
// pMsg =new CMsgTeamAward;
// break;
//case _MSG_PASSWORDLOCK:
// pMsg =new CMsgPasswordLock;
// break;
//case _MSG_TEAMXP:
// pMsg = new CMsgTeamXP;
// break;
//case _MSG_TEAMMEMBERINFO:
// pMsg = new CMsgTeamMemberInfo;
// break;
//case _MSG_SERVERINFO:
// pMsg = new CMsgServerInfo;
// break;
//case _MSG_TEAM_EX:
// pMsg = new CMsgTeamEx;
// break;
//case _MSG_TEAMPOS:
// pMsg = new CMsgTeamPos;
// break;
//case _MSG_BATTLE_FIELD:
// pMsg =new CMsgBattleField;
// break;
//case _MSG_BATTLE_FIELD_MEMBER:
// pMsg =new CMsgBattleFieldMember;
// break;
//case _MSG_BATTLE_FIELD_REQ:
// pMsg =new CMsgBattleFieldReq;
// break;
//case _MSG_BATTLE_FIELD_LIST:
// pMsg =new CMsgBattleFieldInfo;
// break;
//default:
// break;
//}
if(!pMsg)
return NULL;
if(!pMsg->Create(pbufMsg, dwMsgSize))
{
SAFE_DELETE(pMsg);
return NULL;
}
else
{
#ifdef _MYDEBUG
::LogMsg("\n--Receive Msg:%u, Size:%u", pMsg->GetType(), pMsg->GetSize());
#endif
return pMsg;
}
}
/*
CNetMsg* CreateNetMsgFromId(const long lId)
{
return 0;
};
*/
#include <string>
#include <map>
const char* CNetMsg::GetMsgIdName(const long lMsgID)
{
typedef std::map<long,std::string> STD_MAP_MSGID_2_NAME;
static STD_MAP_MSGID_2_NAME ls_MapMsgID2Name;
if(ls_MapMsgID2Name.size()<=0)
{
//
char szTxt[256*1024]={0,};
GetPrivateProfileSection(
"MsgIdLong2Name",
szTxt,
sizeof(szTxt),
"ini/MsgIdDef.ini"
);
char* pszKey=szTxt;
long lVal=0;
char* pchToken=0;
for(long lLen=strlen(pszKey);lLen>0;lLen=strlen(pszKey),pszKey+=(lLen+1))
{
pchToken=strchr(pszKey,'=');
if(pchToken)
{
lVal=atol(pszKey);
ls_MapMsgID2Name.insert(STD_MAP_MSGID_2_NAME::value_type(
lVal,pchToken+1
));
}
}
}
STD_MAP_MSGID_2_NAME::iterator itr=ls_MapMsgID2Name.find(lMsgID);
if(itr==ls_MapMsgID2Name.end())
{
return "";
}
else
{
return (*itr).second.c_str();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -