38 lines
992 B
C
38 lines
992 B
C
|
|
#ifndef CRT_CACHE_H
|
||
|
|
#define CRT_CACHE_H
|
||
|
|
|
||
|
|
#include <stddef.h>
|
||
|
|
#include <stdint.h>
|
||
|
|
#include <stdbool.h>
|
||
|
|
#include <time.h>
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
|
||
|
|
typedef struct crt_cache crt_cache_t;
|
||
|
|
typedef struct crt_cache_entry {
|
||
|
|
char key[256];
|
||
|
|
uint8_t* data;
|
||
|
|
size_t len;
|
||
|
|
time_t expires_at;
|
||
|
|
struct crt_cache_entry* next;
|
||
|
|
} crt_cache_entry_t;
|
||
|
|
|
||
|
|
crt_cache_t* crt_cache_create(size_t max_entries, time_t default_ttl_sec);
|
||
|
|
void crt_cache_destroy(crt_cache_t* cache);
|
||
|
|
|
||
|
|
bool crt_cache_set(crt_cache_t* cache, const char* key, const void* data, size_t len);
|
||
|
|
bool crt_cache_set_ttl(crt_cache_t* cache, const char* key, const void* data, size_t len, time_t ttl_sec);
|
||
|
|
bool crt_cache_get(crt_cache_t* cache, const char* key, void* out, size_t* len);
|
||
|
|
bool crt_cache_delete(crt_cache_t* cache, const char* key);
|
||
|
|
void crt_cache_clear(crt_cache_t* cache);
|
||
|
|
size_t crt_cache_size(crt_cache_t* cache);
|
||
|
|
void crt_cache_evict_expired(crt_cache_t* cache);
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#endif
|