int main(int argc, char* argv[]) { struct conhash_s* conhashp = conhash_init(NULL); int index = 0; for(index=0; index<6; index++) { struct node_s* nodep = (struct node_s*)malloc(sizeof(struct node_s)); memset(nodep, 0, sizeof(struct node_s)); nodep->index = 0; nodep->replicas = 500; nodep->flag = NODE_FLAG_INIT; snprintf(nodep->iden, 64, "10.1.15.1%d", index); nodep->iden[63] = '\0'; conhash_add_node(conhashp, nodep); } #if 0 char* uri = "/videos/v/20110926/205763500/205763500/1/f3a89defde4e580e4058149e9059d1d4.ts"; int len = strlen(uri); struct node_s* findp = conhash_lookup(conhashp, uri, len); fprintf(stdout, "find [%d][%s] by %s\n", findp->index, findp->iden, uri); uri = "/videos/v/20110926/205763500/205763500/2/c59965f441f474c6b0dfbe36232bd614.ts"; len = strlen(uri); findp = conhash_lookup(conhashp, uri, len); fprintf(stdout, "find [%d][%s] by %s\n", findp->index, findp->iden, uri); uri = "abcdefsdfgdsaklj"; len = strlen(uri); findp = conhash_lookup(conhashp, uri, len); fprintf(stdout, "find [%d][%s] by %s\n", findp->index, findp->iden, uri); #endif char buf[MAX_LINE]; FILE *fp; int len; if((fp = fopen("./ts.list","r")) == NULL) { perror("fail to read"); exit (1) ; } while(fgets(buf,MAX_LINE,fp) != NULL) { len = strlen(buf); buf[len-1] = '\0'; struct node_s* findp = conhash_lookup(conhashp, buf, len-1); fprintf(stdout, "%s,%s\n", buf, findp->iden); } fclose(fp); return 0; }
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; }
const char* getserver(cluster *_cluster, char *key) { if (!_cluster || !_cluster->nodelisthead) { //print error return NULL; } const struct node_s *cur = conhash_lookup(_cluster->conhash, key); node_s_inlist *pa = (node_s_inlist*)cur->pointer; while (pa->childern) { if (pa->conhash) { cur = conhash_lookup(pa->conhash, key); pa = (node_s_inlist*)cur->pointer; } else { // error printf return NULL; } } //cur = conhash_lookup(pa->conhash, key); return cur->iden; }
void* AdConHash::LookUp(char * pKey) { struct node_s* pNode; if (m_pHandle == NULL) { return NULL; } pthread_rwlock_rdlock(&m_pLock); pNode = const_cast<struct node_s *>(conhash_lookup(m_pHandle, pKey)); pthread_rwlock_unlock(&m_pLock); if(pNode == NULL) return NULL; return pNode->value; }
void* AdConHashs::LookUp(char * pKey) { struct node_s* pNode; if(m_bFirst) { if (m_pHandleA == NULL) { return NULL; } pNode = const_cast<struct node_s *>(conhash_lookup(m_pHandleA, pKey)); } else { if (m_pHandleB == NULL) { return NULL; } pNode = const_cast<struct node_s *>(conhash_lookup(m_pHandleB, pKey)); } if(pNode == NULL) return NULL; return pNode->value; }
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; }