diff options
Diffstat (limited to 'lib/util/util_tdb.h')
-rw-r--r-- | lib/util/util_tdb.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/lib/util/util_tdb.h b/lib/util/util_tdb.h new file mode 100644 index 0000000000..da6378ee6a --- /dev/null +++ b/lib/util/util_tdb.h @@ -0,0 +1,114 @@ +#ifndef _____LIB_UTIL_UTIL_TDB_H__ +#define _____LIB_UTIL_UTIL_TDB_H__ + + +/*************************************************************** + Make a TDB_DATA and keep the const warning in one place +****************************************************************/ +TDB_DATA make_tdb_data(const uint8_t *dptr, size_t dsize); +TDB_DATA string_tdb_data(const char *string); +TDB_DATA string_term_tdb_data(const char *string); + +/**************************************************************************** + Lock a chain by string. Return -1 if lock failed. +****************************************************************************/ +int tdb_lock_bystring(struct tdb_context *tdb, const char *keyval); + +/**************************************************************************** + Unlock a chain by string. +****************************************************************************/ +void tdb_unlock_bystring(struct tdb_context *tdb, const char *keyval); + +/**************************************************************************** + Read lock a chain by string. Return -1 if lock failed. +****************************************************************************/ +int tdb_read_lock_bystring(struct tdb_context *tdb, const char *keyval); + +/**************************************************************************** + Read unlock a chain by string. +****************************************************************************/ +void tdb_read_unlock_bystring(struct tdb_context *tdb, const char *keyval); + +/**************************************************************************** + Fetch a int32_t value by a arbitrary blob key, return -1 if not found. + Output is int32_t in native byte order. +****************************************************************************/ +int32_t tdb_fetch_int32_byblob(struct tdb_context *tdb, TDB_DATA key); + +/**************************************************************************** + Fetch a int32_t value by string key, return -1 if not found. + Output is int32_t in native byte order. +****************************************************************************/ +int32_t tdb_fetch_int32(struct tdb_context *tdb, const char *keystr); + +/**************************************************************************** + Store a int32_t value by an arbitary blob key, return 0 on success, -1 on failure. + Input is int32_t in native byte order. Output in tdb is in little-endian. +****************************************************************************/ +int tdb_store_int32_byblob(struct tdb_context *tdb, TDB_DATA key, int32_t v); + +/**************************************************************************** + Store a int32_t value by string key, return 0 on success, -1 on failure. + Input is int32_t in native byte order. Output in tdb is in little-endian. +****************************************************************************/ +int tdb_store_int32(struct tdb_context *tdb, const char *keystr, int32_t v); + +/**************************************************************************** + Fetch a uint32_t value by a arbitrary blob key, return -1 if not found. + Output is uint32_t in native byte order. +****************************************************************************/ +bool tdb_fetch_uint32_byblob(struct tdb_context *tdb, TDB_DATA key, uint32_t *value); + +/**************************************************************************** + Fetch a uint32_t value by string key, return -1 if not found. + Output is uint32_t in native byte order. +****************************************************************************/ +bool tdb_fetch_uint32(struct tdb_context *tdb, const char *keystr, uint32_t *value); + +/**************************************************************************** + Store a uint32_t value by an arbitary blob key, return 0 on success, -1 on failure. + Input is uint32_t in native byte order. Output in tdb is in little-endian. +****************************************************************************/ +bool tdb_store_uint32_byblob(struct tdb_context *tdb, TDB_DATA key, uint32_t value); + +/**************************************************************************** + Store a uint32_t value by string key, return 0 on success, -1 on failure. + Input is uint32_t in native byte order. Output in tdb is in little-endian. +****************************************************************************/ +bool tdb_store_uint32(struct tdb_context *tdb, const char *keystr, uint32_t value); + +/**************************************************************************** + Store a buffer by a null terminated string key. Return 0 on success, -1 + on failure. +****************************************************************************/ +int tdb_store_bystring(struct tdb_context *tdb, const char *keystr, TDB_DATA data, int flags); + +/**************************************************************************** + Fetch a buffer using a null terminated string key. Don't forget to call + free() on the result dptr. +****************************************************************************/ +TDB_DATA tdb_fetch_bystring(struct tdb_context *tdb, const char *keystr); + +/**************************************************************************** + Delete an entry using a null terminated string key. +****************************************************************************/ +int tdb_delete_bystring(struct tdb_context *tdb, const char *keystr); + +/**************************************************************************** + Atomic integer change. Returns old value. To create, set initial value in *oldval. +****************************************************************************/ +int32_t tdb_change_int32_atomic(struct tdb_context *tdb, const char *keystr, int32_t *oldval, int32_t change_val); + +/**************************************************************************** + Atomic unsigned integer change. Returns old value. To create, set initial value in *oldval. +****************************************************************************/ +bool tdb_change_uint32_atomic(struct tdb_context *tdb, const char *keystr, uint32_t *oldval, uint32_t change_val); + +/**************************************************************************** + Allow tdb_delete to be used as a tdb_traversal_fn. +****************************************************************************/ +int tdb_traverse_delete_fn(struct tdb_context *the_tdb, TDB_DATA key, TDB_DATA dbuf, + void *state); + +#endif /* _____LIB_UTIL_UTIL_TDB_H__ */ + |