【文件属性】:
文件名称:序列化&反序列化源码
文件大小:19KB
文件格式:H
更新时间:2018-12-10 13:37:31
序列化
支持网络/本地数据序列化及反序列化
struct WlogRecord{
WlogRecord();
WlogRecord(uint64_t bigid, const std::string &sqlstr, const std::string& dbname);
void Reset();
uint16_t CurrentMaxVersion;
uint64_t bigid;
uint64_t logid;
std::string sqlstr;
std::string dbname;
/////////
//int vsid;
uint32_t enqueue_times;
uint16_t GetVersion();
virtual bool Serialize(CByteStreamMemory& bs)
{
bs & bigid;
bs & logid;
bs & sqlstr;
bs & dbname;
bs & enqueue_times;
if(!bs.isGood()) return true; // 兼容之前没有inout型参数的情况
return bs.isGood();
}
};
**************************序列化*****************************
char* pBuf = new char[MAX_BUF_LEN];
CByteStreamMemory bs(pBuf, MAX_BUF_LEN);
bs.setVersion(m_currentWlog.GetVersion());
bs.isStoring(true);
if(!m_currentWlog.Serialize(bs))
{
log->error("Sql request log Serialize(bs) failed.", false);
continue;
}
*************************反乎列化****************************
CByteStreamMemory bss(pBuf, MAX_BUF_LEN);
bss.isStoring(false);
WlogRecord currentWlog;
currentWlog.Serialize(bss);