void AdConHashs::Clear() { vector<struct node_s *>::iterator iter; if(m_bFirst == false) { if (m_pHandleA != NULL) { conhash_fini(m_pHandleA); m_pHandleA = NULL; } for (iter = m_vNodesA.begin(); iter != m_vNodesA.end(); iter ++) { free(*iter); } m_vNodesA.clear(); } else { if (m_pHandleB != NULL) { conhash_fini(m_pHandleB); m_pHandleB = NULL; } for (iter = m_vNodesB.begin(); iter != m_vNodesB.end(); iter ++) { free(*iter); } m_vNodesB.clear(); } }
int main() { int i; const struct node_s *node; char str[128]; long hashes[512]; /* init conhash instance */ struct conhash_s *conhash = conhash_init(NULL); if(conhash) { /* set nodes */ conhash_set_node(&g_nodes[0], "memcache_1", 32); conhash_set_node(&g_nodes[1], "memcache_2", 24); conhash_set_node(&g_nodes[2], "memcache_3", 25); conhash_set_node(&g_nodes[3], "memcache_4", 10); conhash_set_node(&g_nodes[4], "memcache_5", 48); /* add nodes */ conhash_add_node(conhash, &g_nodes[0]); conhash_add_node(conhash, &g_nodes[1]); conhash_add_node(conhash, &g_nodes[2]); conhash_add_node(conhash, &g_nodes[3]); conhash_add_node(conhash, &g_nodes[4]); printf("virtual nodes number %d\n", conhash_get_vnodes_num(conhash)); printf("the hashing results--------------------------------------:\n"); /* try object */ for(i = 0; i < 20; i++) { sprintf(str, "James.km%03d", i); node = conhash_lookup(conhash, str); if(node) printf("[%16s] is in node: [%16s]\n", str, node->iden); } conhash_get_vnodes(conhash, hashes, sizeof(hashes)/sizeof(hashes[0])); conhash_del_node(conhash, &g_nodes[2]); printf("remove node[%s], virtual nodes number %d\n", g_nodes[2].iden, conhash_get_vnodes_num(conhash)); printf("the hashing results--------------------------------------:\n"); for(i = 0; i < 20; i++) { sprintf(str, "James.km%03d", i); node = conhash_lookup(conhash, str); if(node) printf("[%16s] is in node: [%16s]\n", str, node->iden); } } conhash_fini(conhash); return 0; }
void AdConHash::Clear() { map<void *, struct node_s *>::iterator iter; pthread_rwlock_wrlock(&m_pLock); if (m_pHandle != NULL) { conhash_fini(m_pHandle); m_pHandle = NULL; } for (iter = m_mNodes.begin(); iter != m_mNodes.end(); iter ++) { free(iter->second); } m_mNodes.clear(); pthread_rwlock_unlock(&m_pLock); }
int main() { int i; const struct node_s *node; char str[128]; long hashes[512]; /* init conhash instance */ struct conhash_s *conhash = conhash_init(NULL); if(conhash) { /* set nodes */ conhash_set_node(&g_nodes[0], "titanic", 32); conhash_set_node(&g_nodes[1], "terminator2018", 24); conhash_set_node(&g_nodes[2], "Xenomorph", 25); conhash_set_node(&g_nodes[3], "True Lies", 10); conhash_set_node(&g_nodes[4], "avantar", 48); /* add nodes */ conhash_add_node(conhash, &g_nodes[0]); conhash_add_node(conhash, &g_nodes[1]); conhash_add_node(conhash, &g_nodes[2]); conhash_add_node(conhash, &g_nodes[3]); conhash_add_node(conhash, &g_nodes[4]); printf("virtual nodes number %d\n", conhash_get_vnodes_num(conhash)); printf("origin: the hashing results--------------------------------------:\n"); /* try object */ for(i = 0; i < 20; i++) { sprintf(str, "James.km%03d", i); node = conhash_lookup(conhash, str); if(node) printf("[%16s] is in node: [%16s]\n", str, node->iden); } conhash_get_vnodes(conhash, hashes, sizeof(hashes)/sizeof(hashes[0])); /******************delete node********************/ conhash_del_node(conhash, &g_nodes[2]); printf("remove node[%s], virtual nodes number %d\n", g_nodes[2].iden, conhash_get_vnodes_num(conhash)); printf("remove: the hashing results--------------------------------------:\n"); for(i = 0; i < 20; i++) { sprintf(str, "James.km%03d", i); node = conhash_lookup(conhash, str); if(node) printf("[%16s] is in node: [%16s]\n", str, node->iden); } /*******************add node***********************/ conhash_add_node(conhash, &g_nodes[2]); printf("add node[%s], virtual nodes number %d\n", g_nodes[2].iden, conhash_get_vnodes_num(conhash)); printf("add: the hashing results--------------------------------------:\n"); for(i = 0; i < 20; i++) { sprintf(str, "James.km%03d", i); node = conhash_lookup(conhash, str); if(node) printf("[%16s] is in node: [%16s]\n", str, node->iden); } } conhash_fini(conhash); return 0; }