void *upload(void *pParam)
{
CUpSender *s = (CUpSender*)pParam;
map<string, string> mx;
char tmp[20] = {0};
char filename[50] = {0};
string data = "";
while(1)
{
mx.clear();
FileLog(FILENAME, "in thread m_urlcount = [%d]", s->m_urlcount);
while(s->m_urlcount == 0)
{
FileLog(FILENAME, "there is no count files....wait ten seconds!!!!");
sleep(10);
}
//这里是将id的那部分获取出来存入map中
for(int i = 1; i != s->m_urlcount + 1; i++)
{
memset(tmp, 0, sizeof(tmp));
memset(filename, 0, sizeof(filename));
snprintf(tmp, sizeof(tmp), "%d", i);
snprintf(filename, sizeof(filename), "/apps/hotel/run_env/bin/id/%d", i);
ifstream iis(filename);
getline(iis, mx[tmp]);
FileLog(FILENAME, "read urlcount from %d = %s", filename, mx[tmp].c_str());
}
//这里开始组合
Json::Value root;
Json::Value roott;
Json::Value arrayObj;
Json::Value item;
for(map<string, string>::iterator it = mx.begin(); it != mx.end(); it++)
{
item["id"] = it->first;
arrayObj.append(item);
}
roott["mac"] = s->m_strDevMac;
roott["uploadfrequency"] = s->m_uploadfrequency;
roott["urls"] = arrayObj;
root["uwdupload"] = roott;
data = root.toStyledString();
FileLog(FILENAME, "the thread will send to peng webservice data : [%s], url = [%s]", data.c_str(), (s->m_threadurl).c_str());
s->SendCmd1(data, s->m_threadurl);
FileLog(FILENAME, "the thread sleeptime is : [%d]", s->m_threadtime);
sleep(s->m_threadtime);
}
}
上边是合成的过程。
{
"uwdupload":{
"mac": "F0:D1:A9:C9:56:E8",
"uploadfrequency": "180",
"urls": [
{
"id": "1",
"total": "100",
},
{
"id": "2",
"total": "50",
},
{
"id": "3",
"total": "20",
}
]
}
}
这是合成的结果。思想类同解析。