自定义Message示例
以下为MyMessage.h文件
#ifndef MyMessage_H
#define MyMessage_H
#include"OSPublic/Messages/BaseMessage.h"
class CMyMessage: public CBaseMessage
{
public:
BaseMsgDefine(CMyMessage)
edouble m_dPara;
std::vector<eint> m_vIntList;
eint Serilize(const euint8* pBuf,eint nBufLen)
{
eint32 nVectorLength=0,nPos=0;
nVectorLength=m_vIntList.size();
eint nLength = sizeof(edouble)+sizeof(eint32)+nVectorLength*sizeof(eint)+CBaseMessage::m_nLength;
if(NULL==pBuf||nBufLen<nLength)
return nLength;
nPos=CBaseMessage::SerilizeHeader(pBuf,nLength);
nPos = MemM_FillMemory((void*)pBuf,(const void*)&m_dPara,sizeof(edouble),nPos);
nPos = MemM_FillMemory((void*)pBuf,(const void*)&nVectorLength,sizeof(eint32),nPos);
for(eint i=0;i<nVectorLength;i++)
{
nPos=MemM_FillMemory((void*)pBuf,(const void*)&(m_vIntList[i]),sizeof(eint32),nPos);
}
return nLength;
}
eint Deserilize(const euint8* pBuf,eint nLength)
{
eint32 nPos=0;
eint32 nVectorLength;
nPos=CBaseMessage::DeserilizeHeader(pBuf,nLength,m_nPriority,m_dTimeStamp);
nPos = MemM_GetDataFromMem(pBuf, &m_dPara, sizeof(edouble), nPos);
nPos = MemM_GetDataFromMem(pBuf, &nVectorLength, sizeof(eint32), nPos);
m_vIntList.clear();
m_vIntList.resize(nVectorLength);
for(eint i=0;i<nVectorLength;i++)
{
nPos = MemM_GetDataFromMem(pBuf, &m_vIntList[i], sizeof(eint32), nPos);
}
return nPos;
}
void operator = (CBaseMessage& iMsg)
{
m_dTimeStamp = iMsg.m_dTimeStamp;
m_nPriority = iMsg.m_nPriority;
m_strMsgName = iMsg.m_strMsgName;
m_nMessageCode = iMsg.m_nMessageCode;
}
void operator = (CMyMessage& iMsg)
{
Clear();
m_dTimeStamp = iMsg.m_dTimeStamp;
m_nPriority = iMsg.m_nPriority;
m_strMsgName = iMsg.m_strMsgName;
m_nMessageCode = iMsg.m_nMessageCode;
m_dPara=iMsg.m_dPara;
for(euint i =0;i<iMsg.m_vIntList.size();i++)
{
m_vIntList.push_back(iMsg.m_vIntList[i]);
}
}
virtual void Clear()
{
m_dTimeStamp = 0;
m_nPriority = 0;
m_strMsgName = NULL;
m_nMessageCode = 0;
m_vIntList.clear();
}
};
#endif // MyMessage_H