int GetConcurrencyFactor() { static Cache<int> Value; return Value.Get([]() { int ThreadCount = 0; for (int i = 0; i < GetCpuCount(); i++) { CpuInfo Info = GetCpuInfo(i); ThreadCount += Info.ThreadCount; } return ThreadCount; }); }
std::string CSysInfo::GetAllInfo (void) { struct sInfo { map<string, string> * pMap; string Part; }; sInfo Infos[ ] = { {&m_mapCPU , "CPU" }, {&m_mapOS , "OS" }, {&m_mapVideo, "Video" }, {&m_mapDisc , "Disk" }, {&m_mapMem , "Memory"} }; std::map<string, string>::iterator im; GetCpuInfo (); GetDiskInfo (); GetOSInfo (); GetVideoInfo (); GetMemInfo (); string strInfo; for(int i = 0; i < sizeof (Infos) / sizeof (sInfo); i++) { strInfo += "[ "; strInfo += Infos[ i ].Part + " ]\n"; for(im = Infos[ i ].pMap->begin (); im != Infos[ i ].pMap->end (); im++) { strInfo += im->first; strInfo += " : "; strInfo += im->second; strInfo += "\n"; } } return strInfo; }
/*==================================================================== * 函数名 : vGenRegTermMsg * 功能 : 生成终端注册消息 * 算法实现 : * 参数说明 : * nIdx 标识是哪个的base * 返回值说明: 成功 生成的json字符串 * 失败 NULL * ---------------------------------------------------------------------- * 修改记录: * 日 期 版本 修改人 走读人 修改记录 * 2015/1/13 v1.0 YLI 创建 * ====================================================================*/ json_t *vGenRegTermMsg(int nIdx) { json_t *root; json_t *mt_info; json_t *netinfo; json_t *aps_addr; json_t *jt; const char *key; json_t *value; int n,size; char saCfgPath[L_PATH_MAX_LEN]; char tmp[100]; root = json_object(); memset(tmp,0x00,sizeof tmp); memset(saCfgPath,0x00,sizeof saCfgPath); srand((unsigned)time(NULL)); //set eventid if (json_object_set(root,"eventid", json_string("EV_REG_REQ")) == FAILUER) { json_decref(root); vLogErr("eventid set error!!!"); return NULL; } //devid n = rand() % (S_RAND_RANG + _gstrpPid[nIdx].nTermCount); sprintf(tmp,"1.2.%02d",n); if (json_object_set(root,"devid", json_string(tmp)) == FAILUER) { json_decref(root); vLogErr("devid set error!!!"); return NULL; } //devtype if(getenv("APP_PROFILE_PATH") == NULL) { json_decref(root); vLogErr("devtypes config file path error,please check evn value!!!"); return NULL; } strcpy(saCfgPath,getenv("APP_PROFILE_PATH")); strcat(saCfgPath,"/devtypes.json"); jt = tPflGetJsonObj(saCfgPath,K_DEVTYPE_KEY); if (jt == NULL) { json_decref(root); vLogErr("devtypes file open error,please check devtypes.json is exist!!!"); return NULL; } if (json_is_array(jt)) { size = json_array_size(jt); n = rand()%size; if (json_object_set(root,"devtype", json_array_get(jt,n)) == FAILUER) { json_decref(root); vLogErr("devtype set error!!!"); return NULL; } } /*mt_info*/ mt_info = json_object(); //devver if (json_object_set(mt_info,"devver", json_string("123")) == FAILUER) { json_decref(root); vLogErr("devver set error!!!"); return NULL; } //devname json_object_set(mt_info,"devname",json_string("truelink")); //netinfo netinfo = json_object(); json_object_set(netinfo,"ip", json_string(_gstrpShm->rc.nSrvIP)); json_object_set(netinfo,"dns", json_string("172.16.0.65")); json_object_set(mt_info,"netinfo",netinfo); //aps_addr aps_addr = json_object(); json_object_set(aps_addr,"domain", json_string("fdaf")); json_object_set(aps_addr,"ip", json_string(_gstrpShm->rc.nSrvIP)); json_object_set(mt_info,"aps_addr",aps_addr); //oem json_object_set(mt_info,"oem",json_string("dfd")); //os json_object_set(mt_info,"os",json_string("Centos 6.4")); //cpu_num json_object_set(mt_info,"cpu_num",json_integer(4)); //cpu_type //cpu_freq json_decref(jt); jt = GetCpuInfo(); json_object_foreach(jt,key,value) { if(strncmp(key,"cpuMHz",6) == 0) { json_object_set(mt_info,"cpu_freq",value); } if (strncmp(key,"modelname",9) == 0) { json_object_set(mt_info,"cpu_type",value); } } json_decref(jt); jt = GetMemInfo(); //memory json_object_foreach(jt,key,value) { if(strncmp(key,"MemTotal",8) == 0) { json_object_set(mt_info,"memory",value); } } json_object_set(root,"mt_info",mt_info); json_decref(mt_info); return root; }