gwenhywfar
4.6.0beta
|
This file contains the definition of a GWEN_MULTICACHE, a cache for multiple types of data. More...
Typedefs | |
typedef struct GWEN_MULTICACHE | GWEN_MULTICACHE |
typedef struct GWEN_MULTICACHE_TYPE | GWEN_MULTICACHE_TYPE |
typedef int GWENHYWFAR_CB(* | GWEN_MULTICACHE_TYPE_ATTACH_FN )(void *p) |
typedef int GWENHYWFAR_CB(* | GWEN_MULTICACHE_TYPE_FREE_FN )(void *p) |
Central Cache Object | |
This is the central cache object which can hold multiple types of data. | |
GWENHYWFAR_API GWEN_MULTICACHE * | GWEN_MultiCache_new (uint64_t maxSize) |
GWENHYWFAR_API void | GWEN_MultiCache_free (GWEN_MULTICACHE *mc) |
GWENHYWFAR_API uint64_t | GWEN_MultiCache_GetMaxSizeUsed (const GWEN_MULTICACHE *mc) |
This file contains the definition of a GWEN_MULTICACHE, a cache for multiple types of data.
The idea behind this is to make it easier to handle multiple types of objects by a single central cache object. You only set the maximum total size the central cache object is allowed to provide and that object will use this sum of memory to provide a caching mechanism for multiple different types.
You'll have to create a single central cache object (GWEN_MULTICACHE). Then you can create a GWEN_MULTICACHE_TYPE object for each kind of data you want to have managed. For the GWEN_MULTICACHE_TYPE object you need to provide functions which will increase and decrease the reference counter of the object cached.
typedef struct GWEN_MULTICACHE GWEN_MULTICACHE |
Definition at line 58 of file multicache.h.
typedef struct GWEN_MULTICACHE_TYPE GWEN_MULTICACHE_TYPE |
Definition at line 59 of file multicache.h.
typedef int GWENHYWFAR_CB(* GWEN_MULTICACHE_TYPE_ATTACH_FN)(void *p) |
Definition at line 62 of file multicache.h.
typedef int GWENHYWFAR_CB(* GWEN_MULTICACHE_TYPE_FREE_FN)(void *p) |
Definition at line 63 of file multicache.h.
GWENHYWFAR_API void GWEN_MultiCache_free | ( | GWEN_MULTICACHE * | mc | ) |
Definition at line 327 of file multicache.c.
References GWEN_FREE_OBJECT, and GWEN_MultiCache_ReleaseEntry().
GWENHYWFAR_API uint64_t GWEN_MultiCache_GetMaxSizeUsed | ( | const GWEN_MULTICACHE * | mc | ) |
Definition at line 345 of file multicache.c.
GWENHYWFAR_API GWEN_MULTICACHE* GWEN_MultiCache_new | ( | uint64_t | maxSize | ) |
Definition at line 314 of file multicache.c.
References GWEN_NEW_OBJECT.
GWENHYWFAR_API void GWEN_MultiCache_Type_free | ( | GWEN_MULTICACHE_TYPE * | ct | ) |
Definition at line 173 of file multicache.c.
References GWEN_FREE_OBJECT, GWEN_LIST_FINI, and GWEN_MultiCache_ReleaseEntriesForType().
GWENHYWFAR_API void* GWEN_MultiCache_Type_GetData | ( | const GWEN_MULTICACHE_TYPE * | ct, |
uint32_t | id | ||
) |
Definition at line 183 of file multicache.c.
References GWEN_MultiCache_Entry_GetDataPtr(), GWEN_MultiCache_Type_AttachData(), GWEN_MultiCache_UsingEntry(), and NULL.
GWENHYWFAR_API void* GWEN_MultiCache_Type_GetDataWithParams | ( | const GWEN_MULTICACHE_TYPE * | ct, |
uint32_t | id, | ||
uint32_t | param1, | ||
uint32_t | param2, | ||
uint32_t | param3, | ||
uint32_t | param4 | ||
) |
Definition at line 200 of file multicache.c.
References GWEN_MultiCache_Entry_GetDataPtr(), GWEN_MultiCache_Entry_GetParam1(), GWEN_MultiCache_Entry_GetParam2(), GWEN_MultiCache_Entry_GetParam3(), GWEN_MultiCache_Entry_GetParam4(), GWEN_MultiCache_Type_AttachData(), GWEN_MultiCache_UsingEntry(), and NULL.
GWENHYWFAR_API GWEN_MULTICACHE_TYPE* GWEN_MultiCache_Type_new | ( | GWEN_MULTICACHE * | mc | ) |
Definition at line 159 of file multicache.c.
References GWEN_IdMapAlgo_Hex4, GWEN_LIST_INIT, and GWEN_NEW_OBJECT.
GWENHYWFAR_API void GWEN_MultiCache_Type_PurgeAll | ( | GWEN_MULTICACHE_TYPE * | ct | ) |
Definition at line 262 of file multicache.c.
References GWEN_MultiCache_ReleaseEntriesForType().
GWENHYWFAR_API void GWEN_MultiCache_Type_PurgeData | ( | GWEN_MULTICACHE_TYPE * | ct, |
uint32_t | id | ||
) |
Definition at line 252 of file multicache.c.
References GWEN_MultiCache_ReleaseEntry().
Referenced by GWEN_MultiCache_Type_SetData(), and GWEN_MultiCache_Type_SetDataWithParams().
GWENHYWFAR_API void GWEN_MultiCache_Type_SetAttachFn | ( | GWEN_MULTICACHE_TYPE * | ct, |
GWEN_MULTICACHE_TYPE_ATTACH_FN | fn | ||
) |
Definition at line 268 of file multicache.c.
GWENHYWFAR_API void GWEN_MultiCache_Type_SetData | ( | GWEN_MULTICACHE_TYPE * | ct, |
uint32_t | id, | ||
void * | ptr, | ||
uint32_t | size | ||
) |
Definition at line 224 of file multicache.c.
References GWEN_MultiCache_AddEntry(), GWEN_MultiCache_Entry_new(), and GWEN_MultiCache_Type_PurgeData().
GWENHYWFAR_API void GWEN_MultiCache_Type_SetDataWithParams | ( | GWEN_MULTICACHE_TYPE * | ct, |
uint32_t | id, | ||
void * | ptr, | ||
uint32_t | size, | ||
uint32_t | param1, | ||
uint32_t | param2, | ||
uint32_t | param3, | ||
uint32_t | param4 | ||
) |
Definition at line 235 of file multicache.c.
References GWEN_MultiCache_AddEntry(), GWEN_MultiCache_Entry_new(), GWEN_MultiCache_Entry_SetParam1(), GWEN_MultiCache_Entry_SetParam2(), GWEN_MultiCache_Entry_SetParam3(), GWEN_MultiCache_Entry_SetParam4(), and GWEN_MultiCache_Type_PurgeData().
GWENHYWFAR_API void GWEN_MultiCache_Type_SetFreeFn | ( | GWEN_MULTICACHE_TYPE * | ct, |
GWEN_MULTICACHE_TYPE_FREE_FN | fn | ||
) |
Definition at line 275 of file multicache.c.