From ec7c03a80ff7f17b5b7d098d5fee34ba175fc82f Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 16 Feb 2008 15:40:42 +0100 Subject: Add static header for gencache. (This used to be commit 9a0f6a0012243a74702c723dec808c99c58c772e) --- .gitignore | 1 - source4/lib/basic.mk | 6 +-- source4/lib/gencache/gencache.h | 94 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 source4/lib/gencache/gencache.h diff --git a/.gitignore b/.gitignore index a8c1f9a4cc..b0786b66d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ source/pidl/Makefile source/mkconfig.mk source/test-results -source/lib/gencache/gencache.h source/lib/ldb/bin *.pc autom4te.cache diff --git a/source4/lib/basic.mk b/source4/lib/basic.mk index 8653779044..53eb0d038f 100644 --- a/source4/lib/basic.mk +++ b/source4/lib/basic.mk @@ -18,15 +18,11 @@ include tdr/config.mk include dbwrap/config.mk include crypto/config.mk -################################################ -# Start SUBSYSTEM LIBCOMPRESSION [SUBSYSTEM::LIBCOMPRESSION] OBJ_FILES = compression/mszip.o -# End SUBSYSTEM LIBCOMPRESION -################################################ [SUBSYSTEM::GENCACHE] -PRIVATE_PROTO_HEADER = gencache/gencache.h +PUBLIC_HEADERS = gencache/gencache.h OBJ_FILES = gencache/gencache.o PRIVATE_DEPENDENCIES = TDB_WRAP diff --git a/source4/lib/gencache/gencache.h b/source4/lib/gencache/gencache.h new file mode 100644 index 0000000000..1481676fd9 --- /dev/null +++ b/source4/lib/gencache/gencache.h @@ -0,0 +1,94 @@ +#ifndef __LIB_GENCACHE_GENCACHE_H__ +#define __LIB_GENCACHE_GENCACHE_H__ + +/** + * Cache initialisation function. Opens cache tdb file or creates + * it if does not exist. + * + * @return true on successful initialisation of the cache or + * false on failure + **/ +bool gencache_init(struct loadparm_context *lp_ctx); + +/** + * Cache shutdown function. Closes opened cache tdb file. + * + * @return true on successful closing the cache or + * false on failure during cache shutdown + **/ +bool gencache_shutdown(void); + +/** + * Set an entry in the cache file. If there's no such + * one, then add it. + * + * @param keystr string that represents a key of this entry + * @param value text representation value being cached + * @param timeout time when the value is expired + * + * @retval true when entry is successfuly stored + * @retval false on failure + **/ +bool gencache_set(const char *keystr, const char *value, time_t timeout); + +/** + * Set existing entry to the cache file. + * + * @param keystr string that represents a key of this entry + * @param valstr text representation value being cached + * @param timeout time when the value is expired + * + * @retval true when entry is successfuly set + * @retval false on failure + **/ +bool gencache_set_only(const char *keystr, const char *valstr, time_t timeout); + +/** + * Delete one entry from the cache file. + * + * @param keystr string that represents a key of this entry + * + * @retval true upon successful deletion + * @retval false in case of failure + **/ +bool gencache_del(const char *keystr); + +/** + * Get existing entry from the cache file. + * + * @param keystr string that represents a key of this entry + * @param valstr buffer that is allocated and filled with the entry value + * buffer's disposing must be done outside + * @param timeout pointer to a time_t that is filled with entry's + * timeout + * + * @retval true when entry is successfuly fetched + * @retval false for failure + **/ +bool gencache_get(const char *keystr, char **valstr, time_t *timeout); + +/** + * Iterate through all entries which key matches to specified pattern + * + * @param fn pointer to the function that will be supplied with each single + * matching cache entry (key, value and timeout) as an arguments + * @param data void pointer to an arbitrary data that is passed directly to the fn + * function on each call + * @param keystr_pattern pattern the existing entries' keys are matched to + * + **/ +void gencache_iterate(void (*fn)(const char* key, const char *value, time_t timeout, void* dptr), + void* data, const char* keystr_pattern); + +/******************************************************************** + lock a key +********************************************************************/ +int gencache_lock_entry( const char *key ); + +/******************************************************************** + unlock a key +********************************************************************/ +void gencache_unlock_entry( const char *key ); + +#endif /* __LIB_GENCACHE_GENCACHE_H__ */ + -- cgit