int redis_readdir_namespace(char * path, void *buf, fuse_fill_dir_t filler) { TCMAP *map; TCLISTDATUM *tcld; TCLIST * tcl; int ret = -ENOENT, i; struct stat st; char pathbuf[1024]; xlog("redis_readdir_namespace", "path=%s\n", path); if(!buf || !filler) return ret; memset(pathbuf,0,sizeof(pathbuf)); snprintf(pathbuf,sizeof(pathbuf)-1,"%s",path); map = redis_keys_to_tcmap(redis_dir_to_namespace(pathbuf,'/','*')); if(!map) return ret; tcl = tcmapvals(map); if(!tcl) return ret; xlog("redis_readdir_namespace", "anum=%i start=%i num=%i\n", tcl->anum, tcl->start, tcl->num); for(i=tcl->start;i<tcl->num;i++) { memset(&st,0,sizeof(st)); tcld = &tcl->array[i]; filler(buf, redis_dir_to_namespace((char *)tcld->ptr,'*','/'), &st, 0); } tclistclear(tcl); tcmapclear(map); return 0; }
static void getlist_test(void *db, const char *command, int num, int vsiz, int batch, unsigned int seed) { TCADB *adb = db; struct keygen keygen; struct keygen keygen_for_check; TCLIST *list = tclistnew(); TCLIST *recs; int i; keygen_init(&keygen, seed); keygen_init(&keygen_for_check, seed); for (i = 0; i < num; i++) { tclistpush2(list, keygen_next_key(&keygen)); if (tclistnum(list) >= batch) { recs = do_tcadbmisc(adb, command, list); check_records(recs, &keygen_for_check, vsiz, tclistnum(list)); tclistdel(recs); tclistclear(list); } } if (tclistnum(list)) { recs = do_tcadbmisc(adb, command, list); check_records(recs, &keygen_for_check, vsiz, tclistnum(list)); tclistdel(recs); } tclistdel(list); }
static void putlist_test(void *db, const char *command, int num, int vsiz, int batch, unsigned int seed) { TCADB *adb = db; struct keygen keygen; char *value = xmalloc(vsiz); TCLIST *list = tclistnew(); int i; keygen_init(&keygen, seed); for (i = 0; i < num; i++) { tclistpush2(list, keygen_next_key(&keygen)); tclistpush(list, value, vsiz); if (tclistnum(list) / 2 >= batch) { tclistdel(do_tcadbmisc(adb, command, list)); tclistclear(list); } } if (tclistnum(list)) tclistdel(do_tcadbmisc(adb, command, list)); tclistdel(list); free(value); }
void clear() { tclistclear(list_); }