#include <gwenhywfar/gwenhywfarapi.h>
#include <time.h>
#include <inttypes.h>
Go to the source code of this file.
typedef struct GWEN_MEMCACHE GWEN_MEMCACHE |
Definition at line 38 of file memcache.h.
typedef struct GWEN_MEMCACHE_ENTRY GWEN_MEMCACHE_ENTRY |
Definition at line 36 of file memcache.h.
GWENHYWFAR_API GWEN_MEMCACHE_ENTRY* GWEN_MemCache_CreateEntry | ( | GWEN_MEMCACHE * | mc, | |
uint32_t | id, | |||
void * | dataPtr, | |||
size_t | dataLen | |||
) |
Creates a cache entry for the given id. If there already is an entry of the given id that existing entry will first be invalidated. The use counter of the new object returned is 1, so the caller must call GWEN_MemCacheEntry_EndUse after working with the object returned in order to release unused cache entries.
Definition at line 275 of file memcache.c.
References DBG_WARN, GWEN_LOGDOMAIN, GWEN_MemCache__MakeRoom(), GWEN_MemCache_Lock(), GWEN_MemCache_Unlock(), GWEN_MemCacheEntry_free(), and GWEN_MemCacheEntry_new().
GWENHYWFAR_API GWEN_MEMCACHE_ENTRY* GWEN_MemCache_FindEntry | ( | GWEN_MEMCACHE * | mc, | |
uint32_t | id | |||
) |
Returns the cache entry with the given id (if any). If NULL is returned then there is no entry with the given id, otherwise the use counter of the object returned is incremented. Therefore the caller has to call GWEN_MemCacheEntry_EndUse after working with the object returned in order to release unused cache entries.
Definition at line 189 of file memcache.c.
References GWEN_MemCache_Lock(), and GWEN_MemCache_Unlock().
GWENHYWFAR_API void GWEN_MemCache_free | ( | GWEN_MEMCACHE * | mc | ) |
Definition at line 179 of file memcache.c.
References GWEN_FREE_OBJECT, and GWEN_Mutex_free().
GWENHYWFAR_API GWEN_MEMCACHE* GWEN_MemCache_new | ( | size_t | maxCacheMemory, | |
uint32_t | maxCacheEntries | |||
) |
Definition at line 164 of file memcache.c.
References GWEN_IdMapAlgo_Hex4, GWEN_Mutex_new(), and GWEN_NEW_OBJECT.
GWENHYWFAR_API void GWEN_MemCache_Purge | ( | GWEN_MEMCACHE * | mc | ) |
This function invalidates all cache entries. See GWEN_MemCache_PurgeEntry for implementation details and caveats.
Definition at line 368 of file memcache.c.
References GWEN_MemCache_PurgeEntries().
GWENHYWFAR_API void GWEN_MemCache_PurgeEntries | ( | GWEN_MEMCACHE * | mc, | |
uint32_t | id, | |||
uint32_t | mask | |||
) |
This function invalidates all entries whose ids match the given id/mask pair. See GWEN_MemCache_PurgeEntry for implementation details and caveats.
Definition at line 334 of file memcache.c.
References GWEN_IdMapResult_Ok, GWEN_MemCache_Lock(), GWEN_MemCache_Unlock(), and GWEN_MemCacheEntry_free().
Referenced by GWEN_MemCache_Purge().
GWENHYWFAR_API void GWEN_MemCache_PurgeEntry | ( | GWEN_MEMCACHE * | mc, | |
uint32_t | id | |||
) |
This function invalidates a given cache entry (if it exists). The data associated with that entry is not freed yet until all users of that entry called GWEN_MemCacheEntry_EndUse (i.e. until the use counter of that entry reaches zero). However, the entry will be removed from the cache index so that future calls to GWEN_MemCache_FindEntry will not return it.
Definition at line 207 of file memcache.c.
References GWEN_MemCache_Lock(), GWEN_MemCache_Unlock(), and GWEN_MemCacheEntry_free().
GWENHYWFAR_API void GWEN_MemCacheEntry_BeginUse | ( | GWEN_MEMCACHE_ENTRY * | me | ) |
Definition at line 116 of file memcache.c.
References DBG_INFO, GWEN_LOGDOMAIN, GWEN_MemCache_Lock(), and GWEN_MemCache_Unlock().
GWENHYWFAR_API void GWEN_MemCacheEntry_EndUse | ( | GWEN_MEMCACHE_ENTRY * | me | ) |
Definition at line 131 of file memcache.c.
References DBG_ERROR, DBG_INFO, GWEN_LOGDOMAIN, GWEN_MemCache_Lock(), GWEN_MemCache_Unlock(), and GWEN_MemCacheEntry_free().
GWENHYWFAR_API void GWEN_MemCacheEntry_free | ( | GWEN_MEMCACHE_ENTRY * | me | ) |
Definition at line 63 of file memcache.c.
References GWEN_FREE_OBJECT.
Referenced by GWEN_MemCache__MakeRoom(), GWEN_MemCache_CreateEntry(), GWEN_MemCache_PurgeEntries(), GWEN_MemCache_PurgeEntry(), and GWEN_MemCacheEntry_EndUse().
GWENHYWFAR_API size_t GWEN_MemCacheEntry_GetDataLen | ( | GWEN_MEMCACHE_ENTRY * | me | ) |
Definition at line 109 of file memcache.c.
GWENHYWFAR_API void* GWEN_MemCacheEntry_GetDataPtr | ( | GWEN_MEMCACHE_ENTRY * | me | ) |
Definition at line 102 of file memcache.c.
GWENHYWFAR_API uint32_t GWEN_MemCacheEntry_GetId | ( | GWEN_MEMCACHE_ENTRY * | me | ) |
Definition at line 95 of file memcache.c.
GWENHYWFAR_API int GWEN_MemCacheEntry_GetIsValid | ( | const GWEN_MEMCACHE_ENTRY * | me | ) |