Exemple #1
0
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;
}
Exemple #3
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;
}
Exemple #6
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], "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;
}