bool CRedisProxyCfg::saveProxyLastState(RedisProxy* proxy) { TiXmlElement* pRootNode = (TiXmlElement*)m_operateXmlPointer->get_rootElement(); string nodeHash = "hash_mapping"; TiXmlElement* pOldHashMap; if (GetNodePointerByName(pRootNode, nodeHash, pOldHashMap)) { pRootNode->RemoveChild(pOldHashMap); } TiXmlElement hashMappingNode("hash_mapping"); for (int i = 0; i < proxy->slotCount(); ++i) { TiXmlElement hashNode("hash"); hashNode.SetAttribute("value", i); hashNode.SetAttribute("group_name", proxy->groupBySlot(i)->groupName()); hashMappingNode.InsertEndChild(hashNode); } pRootNode->InsertEndChild(hashMappingNode); // key mapping string nodeKey = "key_mapping"; TiXmlElement* pKey; if (GetNodePointerByName(pRootNode, nodeKey, pKey)) { pRootNode->RemoveChild(pKey); } TiXmlElement keyMappingNode("key_mapping"); StringMap<RedisServantGroup*>& keyMapping = proxy->keyMapping(); StringMap<RedisServantGroup*>::iterator it = keyMapping.begin(); for (; it != keyMapping.end(); ++it) { String key = it->first; TiXmlElement keyNode("key"); keyNode.SetAttribute("key_name", key.data()); RedisServantGroup* group = it->second; if (group != NULL) { keyNode.SetAttribute("group_name", group->groupName()); } keyMappingNode.InsertEndChild(keyNode); } pRootNode->InsertEndChild(keyMappingNode); // add time time_t now = time(NULL); char fileName[512]; struct tm* current_time = localtime(&now); sprintf(fileName,"onecache%d%02d%02d%02d.xml", current_time->tm_year + 1900, current_time->tm_mon + 1, current_time->tm_mday, current_time->tm_hour); bool ok = m_operateXmlPointer->m_docPointer->SaveFile(fileName); return ok; }
Index::Index(unsigned int _l_index, char* block, unsigned int blockLen) { parentIndex.block = 0; parentIndex.size = 0; hashNode(_l_index, block, blockLen); }