libnmdb: Add Doxygen documentation to the public API
[nmdb.git] / nmdb / be-tc.c
bloba035626857b548ab1a62289fc920cdd1c993a26d
2 #if BE_ENABLE_TC
4 #include <tchdb.h> /* Tokyo Cabinet's hash API */
5 #include <stdlib.h>
7 #include "be.h"
10 int tc_set(struct db_conn *db, const unsigned char *key, size_t ksize,
11 unsigned char *val, size_t vsize);
12 int tc_get(struct db_conn *db, const unsigned char *key, size_t ksize,
13 unsigned char *val, size_t *vsize);
14 int tc_del(struct db_conn *db, const unsigned char *key, size_t ksize);
15 int tc_close(struct db_conn *db);
18 struct db_conn *tc_open(const char *name, int flags)
20 struct db_conn *db;
21 TCHDB *tc_db = tchdbnew();
23 if (!tchdbopen(qdbm_db, name, HDBOWRITER | HDBOCREAT))
24 return NULL;
26 db = malloc(sizeof(struct db_conn));
27 if (db == NULL) {
28 tchdbclose(tc_db);
29 tchdbdel(tc_db);
30 return NULL;
33 db->conn = tc_db;
34 db->set = tc_set;
35 db->get = tc_get;
36 db->del = tc_del;
37 db->close = tc_close;
39 return db;
43 int tc_close(struct db_conn *db)
45 int r = tchdbclose(db->conn);
46 tchdbdel(db->conn);
47 free(db);
48 return r;
52 int tc_set(struct db_conn *db, const unsigned char *key, size_t ksize,
53 unsigned char *val, size_t vsize)
55 return tchdbput(db->conn, key, ksize, val, vsize);
59 int tc_get(struct db_conn *db, const unsigned char *key, size_t ksize,
60 unsigned char *val, size_t *vsize)
62 int rv;
64 rv = tchdbget3(db->conn, key, ksize, val, *vsize);
65 if (rv >= 0) {
66 *vsize = rv;
67 return 1;
68 } else {
69 return 0;
73 int tc_del(struct db_conn *db, const unsigned char *key, size_t ksize)
75 return tchdbout(db->conn, key, ksize);
78 #else
80 #include <stddef.h> /* NULL */
82 struct db_conn *tc_open(const char *name, int flags)
84 return NULL;
87 #endif