-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlru.h
More file actions
36 lines (28 loc) · 896 Bytes
/
lru.h
File metadata and controls
36 lines (28 loc) · 896 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef esocks_lru_h
#define esocks_lru_h
#include <sys/time.h>
#include <sys/socket.h>
typedef int lru_cmp_func(const void*, const void*);
typedef int lru_get_key_func(void *);
typedef struct payload_s payload_t;
struct payload_s {
const void *key;
void *val;
};
typedef struct lru_node_s lru_node_t;
struct lru_node_s {
time_t start;
const char *key;
void *payload_ptr;
lru_node_t *next;
lru_node_t *prev;
};
const char *lru_get_key(lru_node_t *p);
void lru_purge_all(lru_node_t **node_pptr);
void lru_insert_left(lru_node_t **node_pptr, const char *key, void *data_p, size_t s);
void lru_remove_oldest(lru_node_t **node_pptr, long timeout);
lru_node_t *lru_init(void);
lru_node_t *lru_get_node(lru_node_t **node, void *key, lru_cmp_func *func);
lru_node_t *lru_get_tail(void);
void *lru_get_oldest_payload(lru_node_t **node_pptr, long timeout);
#endif