Beispiel #1
0
/*
 * delete key/value
 */
int ConfigDel(tConfigDB* db,const void* pKey,int KeySize)
{
    tCluster * cluster = (tCluster*)db->cluster;
    tKey key;
    key.str = (char*)pKey;
    key.len = KeySize;
    unsigned int hash = gethash(key.str,key.len);
    hash = hash%MAX_NODE_NUM;/* distribute strategy */
    tNode* pNode = (tNode*)GetNode(cluster,hash);
    if(pNode->fd == 0)
    {
        return DBDelKeyValue(db->db,key);
    }
    else if(pNode->fd == -1)
    {
        pNode->fd = RemoteDBCreate(db->filename,pNode->addr,pNode->port);
        if(pNode->fd == -1)
        {
            return -1;
        }
        return RemoteDBDelKeyValue(pNode->fd,key);
    }
    else
    {
        return RemoteDBDelKeyValue(pNode->fd,key);
    }
}
Beispiel #2
0
int ExecCmd(char * cmdbuf)
{
    char temp[MAX_STR_LEN] = "\0";
    if(CheckCmd(cmdbuf,"help") == 0 )
    {
        printf("open filename - EX:open nezha.hdb\n");
        printf("set key value - EX:set 100 helloworld\n");
        printf("get key       - EX:get 100\n");
        printf("delete key    - EX:delete 100\n");
        printf("close         - leave nezha.hdb\n");
        printf("help          - list cmds info\n");
    }
    else if(CheckCmd(cmdbuf,"open (.*)\\.hdb") == 0)
    {
        if(strlen(dbname) > 0)
        {
            printf("Please close %s first.\n",dbname);
        }
        else
        {
            sscanf(cmdbuf,"%s%s",temp,dbname);
            db = DBCreate(dbname);
        }
    }
    else if(db == NULL && CheckCmd(cmdbuf,"set|get|delete") == 0)
    {
        printf("Please open a database file first.\n");
    }
    else if(CheckCmd(cmdbuf,"close") == 0)
    {
        if(db != NULL)
        {
            DBDelete(db);
            db = NULL;
        }
        dbname[0] = '\0';
    }
    else if(CheckCmd(cmdbuf,"exit") == 0)
    {
        if(db != NULL)
        {
            DBDelete(db);
        }
        exit(0);
    }
    else if(CheckCmd(cmdbuf,"set ([0-9]+) (.*)") == 0)
    {
        tKey key;
        tValue value;
        char str[MAX_STR_LEN] = "\0";
        sscanf(cmdbuf,"%s%d%s",temp,&key,str);
        value.str = strstr(cmdbuf,str);
        value.len = cmdbuf + MAX_STR_LEN - value.str;
        if(DBSetKeyValue(db,key,value) != 0)
        {
            printf("ERROR:set %d %s\n",(int)key,value.str);
        }
        //printf("set %d %s\n",(int)key,value.str);
    }
    else if(CheckCmd(cmdbuf,"get ([0-9]+)") == 0)
    {
        tKey key = -1;
        tValue value;
        char str[MAX_STR_LEN] = "\0";
        value.str = str;
        value.len = MAX_STR_LEN;
        sscanf(cmdbuf,"%s%d",temp,&key);
        if(DBGetKeyValue(db,key,&value) == 0)
        {
            printf("%d -> %s\n",key,value.str);
        }
        else
        {
            printf("ERROR:get %d Not found!\n",(int)key);
        }
    }
    else if(CheckCmd(cmdbuf,"delete ([0-9]+)") == 0)
    {
        tKey key = -1;
        tValue value;
        char str[MAX_STR_LEN] = "\0";
        value.str = str;
        value.len = MAX_STR_LEN;
        sscanf(cmdbuf,"%s%d",temp,&key);
        if(DBDelKeyValue(db,key) != 0)
        {
            printf("ERROR:delete %d\n",(int)key);
        }
    }
    else
    {
        printf("Unknow Command!\n");
    }
    return 0;
}