Ejemplo n.º 1
0
static void
do_varsz(TdbHdr *dbh)
{
	int i;
	TestUrl *u;

	/* Store records. */
	for (i = 0, u = urls; i < DATA_N; ++u, ++i) {
		unsigned long k = tdb_hash_calc(u->data, u->len);
		size_t copied, to_copy = u->len;
		TdbVRec *rec;

		print_bin_url(u);

		rec = (TdbVRec *)tdb_htrie_insert(dbh, k, u->data, &to_copy);
		assert((u->len && rec) || (!u->len && !rec));

		copied = to_copy;

		while (copied != u->len) {
			char *p;

			rec = tdb_htrie_extend_rec(dbh, rec, u->len - copied);
			assert(rec);

			p = (char *)(rec + 1);
			memcpy(p, u->data + copied, rec->len);

			copied += rec->len;
		}
	}

	lookup_varsz_records(dbh);
}
Ejemplo n.º 2
0
TdbRec *
tdb_entry_create(TDB *db, unsigned long key, void *data, size_t *len)
{
	TdbRec *r = tdb_htrie_insert(db->hdr, key, data, len);
	if (!r)
		TDB_ERR("Cannot create cache entry for %.*s, key=%#lx\n",
			(int)*len, (char *)data, key);

	return r;
}
Ejemplo n.º 3
0
static void
do_fixsz(TdbHdr *dbh)
{
	int i;

	/* Store records. */
	for (i = 0; i < DATA_N; ++i) {
		size_t copied = sizeof(ints[i]);
		TdbRec *rec __attribute__((unused));

		printf("insert int %u\n", ints[i]);
		fflush(NULL);

		rec = tdb_htrie_insert(dbh, ints[i], &ints[i], &copied);
		assert(rec && copied == sizeof(ints[i]));
	}

	lookup_fixsz_records(dbh);
}