自定义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