/* * 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); } }
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; }