Skip to content
Snippets Groups Projects
Commit 901fb5f4 authored by Daniel Salzman's avatar Daniel Salzman
Browse files

namedb: add typedef namedb_api_t

parent 1bd0af93
No related branches found
No related tags found
No related merge requests found
......@@ -92,7 +92,7 @@ static int store_timers(namedb_txn_t *txn, zone_t *zone)
/*! \brief Reads timers for persistent events. */
static int read_timers(namedb_txn_t *txn, const zone_t *zone, time_t *timers)
{
const struct namedb_api *db_api = namedb_lmdb_api();
const namedb_api_t *db_api = namedb_lmdb_api();
assert(db_api);
namedb_val_t key = { .len = knot_dname_size(zone->name), .data = zone->name };
......@@ -132,8 +132,8 @@ int open_timers_db(const char *storage, namedb_t **db_ptr)
return KNOT_EINVAL;
}
const struct namedb_api *api = namedb_lmdb_api();
if (!api) {
const namedb_api_t *db_api = namedb_lmdb_api();
if (!db_api) {
return KNOT_ENOTSUP;
}
......@@ -142,7 +142,7 @@ int open_timers_db(const char *storage, namedb_t **db_ptr)
return KNOT_ENOMEM;
}
int ret = api->init(path, db_ptr, NULL);
int ret = db_api->init(path, db_ptr, NULL);
free(path);
......@@ -155,7 +155,7 @@ void close_timers_db(namedb_t *timer_db)
return;
}
const struct namedb_api *db_api = namedb_lmdb_api();
const namedb_api_t *db_api = namedb_lmdb_api();
assert(db_api);
db_api->deinit(timer_db);
......@@ -168,7 +168,7 @@ int read_zone_timers(namedb_t *timer_db, const zone_t *zone, time_t *timers)
return KNOT_EOK;
}
const struct namedb_api *db_api = namedb_lmdb_api();
const namedb_api_t *db_api = namedb_lmdb_api();
assert(db_api);
namedb_txn_t txn;
......@@ -192,7 +192,7 @@ int write_zone_timers(namedb_t *timer_db, zone_t *zone)
return KNOT_EOK;
}
const struct namedb_api *db_api = namedb_lmdb_api();
const namedb_api_t *db_api = namedb_lmdb_api();
assert(db_api);
namedb_txn_t txn;
......@@ -216,7 +216,7 @@ int sweep_timer_db(namedb_t *timer_db, knot_zonedb_t *zone_db)
return KNOT_EOK;
}
const struct namedb_api *db_api = namedb_lmdb_api();
const namedb_api_t *db_api = namedb_lmdb_api();
assert(db_api);
namedb_txn_t txn;
......
......@@ -50,8 +50,7 @@ typedef struct namedb_txn {
void *txn;
} namedb_txn_t;
struct namedb_api {
typedef struct namedb_api {
const char *name;
/* Context operations */
......@@ -81,4 +80,4 @@ struct namedb_api {
int (*iter_key)(namedb_iter_t *iter, namedb_val_t *key);
int (*iter_val)(namedb_iter_t *iter, namedb_val_t *val);
void (*iter_finish)(namedb_iter_t *iter);
};
} namedb_api_t;
......@@ -210,14 +210,14 @@ static int clear(namedb_txn_t *txn)
if (ret != MDB_SUCCESS) {
return lmdb_error_to_knot(ret);
}
return KNOT_EOK;
}
static namedb_iter_t *iter_set(namedb_iter_t *iter, namedb_val_t *key, unsigned flags)
{
MDB_cursor *cursor = iter;
MDB_cursor_op op = MDB_SET;
switch(flags) {
case NAMEDB_NOOP: return cursor;
......@@ -235,7 +235,7 @@ static namedb_iter_t *iter_set(namedb_iter_t *iter, namedb_val_t *key, unsigned
db_key.mv_data = key->data;
db_key.mv_size = key->len;
}
int ret = mdb_cursor_get(cursor, key ? &db_key : NULL, NULL, op);
/* LEQ is not supported in LMDB, workaround using GEQ. */
......@@ -267,10 +267,10 @@ static namedb_iter_t *iter_begin(namedb_txn_t *txn, unsigned flags)
if (ret != MDB_SUCCESS) {
return NULL;
}
/* Clear sorted flag, as it's always sorted. */
flags &= ~NAMEDB_SORTED;
return iter_set(cursor, NULL, (flags == 0) ? NAMEDB_FIRST : flags);
}
......@@ -325,14 +325,14 @@ static int find(namedb_txn_t *txn, namedb_val_t *key, namedb_val_t *val, unsigne
if (iter == NULL) {
return KNOT_ERROR;
}
int ret = KNOT_EOK;
if (iter_set(iter, key, flags) == NULL) {
return KNOT_ENOENT;
} else {
ret = iter_val(iter, val);
}
iter_finish(iter);
return ret;
}
......@@ -384,7 +384,7 @@ const struct namedb_api *namedb_lmdb_api(void)
#include <stdlib.h>
const struct namedb_api *namedb_lmdb_api(void)
const namedb_api_t *namedb_lmdb_api(void)
{
return NULL;
}
......
......@@ -18,4 +18,4 @@
#include "libknot/internal/namedb/namedb.h"
const struct namedb_api *namedb_lmdb_api(void);
const namedb_api_t *namedb_lmdb_api(void);
......@@ -109,12 +109,12 @@ static namedb_iter_t *iter_begin(namedb_txn_t *txn, unsigned flags)
{
bool is_sorted = (flags & NAMEDB_SORTED);
flags &= ~NAMEDB_SORTED;
/* No operations other than begin are supported right now. */
if (flags != 0) {
return NULL;
}
return hattrie_iter_begin((hattrie_t *)txn->db, is_sorted);
}
......@@ -162,9 +162,9 @@ static void iter_finish(namedb_iter_t *iter)
hattrie_iter_free((hattrie_iter_t *)iter);
}
const struct namedb_api *namedb_trie_api(void)
const namedb_api_t *namedb_trie_api(void)
{
static const struct namedb_api api = {
static const namedb_api_t api = {
"hattrie",
init, deinit,
txn_begin, txn_commit, txn_abort,
......
......@@ -18,4 +18,4 @@
#include "libknot/internal/namedb/namedb.h"
const struct namedb_api *namedb_trie_api(void);
const namedb_api_t *namedb_trie_api(void);
......@@ -49,7 +49,7 @@ static char *str_key_rand(size_t len, mm_ctx_t *pool)
#include "libknot/internal/array-sort.h"
static void namedb_test_set(unsigned nkeys, char **keys, char *dbid,
const struct namedb_api *api, mm_ctx_t *pool)
const namedb_api_t *api, mm_ctx_t *pool)
{
if (api == NULL) {
skip("API not compiled in");
......@@ -194,7 +194,7 @@ static void namedb_test_set(unsigned nkeys, char **keys, char *dbid,
is_int(0, ret, "%s: clear()", api->name);
ret = api->txn_commit(&txn);
is_int(0, ret, "%s: commit clear", api->name);
/* Check if the database is empty. */
ret = api->txn_begin(db, &txn, NAMEDB_RDONLY);
db_size = api->count(&txn);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment