Example #1
0
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;
}
Example #2
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);
}
Example #3
0
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);
}
Example #4
0
 void clear()
 {
   tclistclear(list_);
 }