cache.h
uint16_t concurrency
Expected concurrency and number of shards.
Definition: cache.h:180
EXTERNAL void fiftyoneDegreesCacheRelease(fiftyoneDegreesCacheNode *node)
Releases the cache node previous obtained via fiftyoneDegreesCacheGet so that it can be evicted from ...
Definition: cache.c:412
const void * loaderState
Cache loader specific state.
Definition: cache.h:187
Cache structure to store the root of the red black tree and a list of allocated cache nodes.
Definition: cache.h:177
pthread_mutex_t fiftyoneDegreesMutex
MUTEX AND THREADING MACROS.
Definition: threading.h:82
fiftyoneDegreesCacheShard * shards
Array of shards / concurrency.
Definition: cache.h:178
fiftyoneDegreesCacheNode * nodes
Array of nodes / capacity.
Definition: cache.h:179
fiftyoneDegreesCacheNode * last
Pointer to the last node in the linked list.
Definition: cache.h:143
fiftyoneDegreesCacheShard * shard
Shard the node is associated with.
Definition: cache.h:125
Cache node structure used for storing data in the cache along with its key.
Definition: cache.h:122
unsigned long hits
The requests served from the cache.
Definition: cache.h:182
Data structure used for reusing memory which may have been allocated in a previous operation.
Definition: data.h:99
int64_t(* fiftyoneDegreesCacheHashCodeMethod)(const void *key)
Method used to calculate a hash code from the key.
Definition: cache.h:170
uint32_t allocated
Number of nodes currently used in the shard.
Definition: cache.h:139
int activeCount
Number of external references to the node data.
Definition: cache.h:128
fiftyoneDegreesTreeRoot root
Root node of the red black tree.
Definition: cache.h:137
EXTERNAL fiftyoneDegreesCacheNode * fiftyoneDegreesCacheGet(fiftyoneDegreesCache *cache, const void *key, fiftyoneDegreesException *exception)
Gets an item from the cache.
Definition: cache.c:375
fiftyoneDegreesCacheNode * first
Pointer to the first node in the linked list.
Definition: cache.h:141
fiftyoneDegreesCacheNode * nodes
Pointer to the array of all nodes.
Definition: cache.h:140
fiftyoneDegreesMutex lock
Used to ensure exclusive access to the shard for get and release operations.
Definition: cache.h:146
EXTERNAL fiftyoneDegreesCache * fiftyoneDegreesCacheCreate(uint32_t capacity, uint16_t concurrency, fiftyoneDegreesCacheLoadMethod load, fiftyoneDegreesCacheHashCodeMethod hash, const void *state)
Creates a new cache.The cache must be destroyed with the fiftyoneDegreesCacheFree method.
Definition: cache.c:309
EXTERNAL int64_t fiftyoneDegreesCacheHash32(const void *key)
Passed a pointer to a 32 bit / 4 byte data structure and returns the data as a 64 bit / 8 byte value ...
Definition: cache.c:429
Cache shard structure used to enable concurrent access to the cache.
Definition: cache.h:134
fiftyoneDegreesCacheNode * listPrevious
Previous node or NULL if first.
Definition: cache.h:126
fiftyoneDegreesCache * cache
Pointer to the cache to which the node belongs.
Definition: cache.h:135
fiftyoneDegreesTreeNode tree
Tree node for this cache node.
Definition: cache.h:123
Structure used to represent a 51Degrees exception and passed into methods that might generate excepti...
Definition: exceptions.h:109
fiftyoneDegreesCacheHashCodeMethod hash
Used to hash a key pointer.
Definition: cache.h:186
EXTERNAL int64_t fiftyoneDegreesCacheHash64(const void *key)
Passed a pointer to a 64 bit / 8 byte data structure and returns the data as a 64 bit / 8 byte value ...
Definition: cache.c:433
unsigned long misses
The requests NOT served from the cache.
Definition: cache.h:183
fiftyoneDegreesCacheLoadMethod load
Used by the cache to load an item into the cache.
Definition: cache.h:184
void(* fiftyoneDegreesCacheLoadMethod)(const void *state, fiftyoneDegreesData *data, const void *key, fiftyoneDegreesException *exception)
Method used to load data into the cache.
Definition: cache.h:159
fiftyoneDegreesCacheNode * listNext
Next node or NULL if last.
Definition: cache.h:127
fiftyoneDegreesData data
Data contained in the node.
Definition: cache.h:124
EXTERNAL void fiftyoneDegreesCacheFree(fiftyoneDegreesCache *cache)
Frees the cache structure, all allocated nodes and their data.
Definition: cache.c:362
