2008-10-12 17:50:41 +02:00
# 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 ) ;
2009-12-03 18:43:49 +01:00
bool tdb_data_equal ( TDB_DATA t1 , TDB_DATA t2 ) ;
2008-10-12 17:50:41 +02:00
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 ) ;
/****************************************************************************
2010-02-21 16:58:07 +11:00
Store a int32_t value by an arbitrary blob key , return 0 on success , - 1 on failure .
2008-10-12 17:50:41 +02:00
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 ) ;
/****************************************************************************
2010-02-21 16:58:07 +11:00
Store a uint32_t value by an arbitrary blob key , return 0 on success , - 1 on failure .
2008-10-12 17:50:41 +02:00
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__ */