ps_usp_rspfile.cpp
来自「这个程序可以将给定的文件块写到Berkeley DB中去」· C++ 代码 · 共 109 行
CPP
109 行
// PS_usp_rspfile.cpp: implementation of the PS_usp_rspfile class.
//
//////////////////////////////////////////////////////////////////////
#include "PS_usp_rspfile.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
int keycount;
void initfun()
{
keycount = 0;
}
CUspRspfile::CUspRspfile()
{
}
CUspRspfile::CUspRspfile(CUspLog *log)
{
this->log = *log;
initfun();
}
CUspRspfile::~CUspRspfile()
{
initfun();
}
void CUspRspfile::addBlockData(BlockData * blockdata)
{
//log.writeLog("addHashKey = ",hashString);
m_blockdatalist.push_back(blockdata);
keycount++;
}
void CUspRspfile::setFileData(FileData * filedata)
{
this->filedata = filedata;
}
const int HEAD_STR_LEN = 41;//头<?xml version=\"1.0\" encoding=\"UTF-8\"?>
const int BLOCK_STR_LEN = 170;//<SLICE>....
const int FILE_STR_LEN = 100;//<FILE>...
void CUspRspfile::genrateRspFile()
{
//char hashString[HASH_LEN];
//memset(hashString,0,HASH_LEN);
log.writeLog("keycount = ",keycount);
//分配XML的空间大小
int len = HEAD_STR_LEN+FILE_STR_LEN+BLOCK_STR_LEN*keycount;
char *rspString = (char*)malloc( len );
memset( rspString , 0x0 , len);
log.writeLog("len = ",len);
log.debugLog("=========================fileElement_start.start=======================\r\n");
strcpy(rspString ,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
char fileElement_start[FILE_STR_LEN]= {0};
memset( fileElement_start , 0x0 , FILE_STR_LEN);
sprintf(fileElement_start,"<FILE block=\"%d\" name=\"%s\" sfid=\"%s\" size=\"%d\">\r\n"
,filedata->block,filedata->name,filedata->sfid,filedata->size);
//int fileElement_startlen = strlen(fileElement_start);
//log.writeLog("fileElement_startlen len = ",fileElement_startlen);
//追加字串
strcat(rspString,fileElement_start);
log.debugLog("=========================blockstr.start=======================\r\n");
PBlockDataList iList = NULL;
for(iList=m_blockdatalist.begin();iList!=m_blockdatalist.end();iList++)
{
//log.writeLog("in seed hashkey = ",*iList);
BlockData * blockdata= *iList;
char blockstr[BLOCK_STR_LEN]= {0};
memset( blockstr , 0x0 , BLOCK_STR_LEN);
sprintf(blockstr,
"\t<SLICE area=\"%d\" id=\"%d\" size=\"%d\">\r\n\t\t<SHA>%s</SHA>\r\n\t\t<PEER>%s</PEER>\r\n\t\t<STAT>%d</STAT>\r\n\t</SLICE>\r\n"
,blockdata->area,blockdata->id,blockdata->size,blockdata->sha,blockdata->peer,blockdata->stat);
//int loglen = strlen(blockstr);
//log.writeLog("blockstr len = ",loglen);
//追加字串
strcat(rspString,blockstr);
//一定要注意清理blockdata
delete []blockdata->sha;
delete []blockdata->peer;
delete blockdata;
}
//追加字串
strcat(rspString,"</FILE>\r\n");
log.writeLog(rspString);
int rspstringlen = strlen(rspString);
log.writeLog("rspString len 222= ",rspstringlen);
log.writeLog("");
log.debugLog("=========================free block.start=======================\r\n");
//释放资源
free(rspString);
delete [](filedata->name);
delete [](filedata->sfid);
delete filedata;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?