-
Notifications
You must be signed in to change notification settings - Fork 2k
/
ngx_http_lua_shdict.h
113 lines (87 loc) · 3.1 KB
/
ngx_http_lua_shdict.h
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
* Copyright (C) Yichun Zhang (agentzh)
*/
#ifndef _NGX_HTTP_LUA_SHDICT_H_INCLUDED_
#define _NGX_HTTP_LUA_SHDICT_H_INCLUDED_
#include "ngx_http_lua_common.h"
typedef struct {
u_char color;
uint8_t value_type;
u_short key_len;
uint32_t value_len;
uint64_t expires;
ngx_queue_t queue;
uint32_t user_flags;
u_char data[1];
} ngx_http_lua_shdict_node_t;
typedef struct {
ngx_queue_t queue;
uint32_t value_len;
uint8_t value_type;
u_char data[1];
} ngx_http_lua_shdict_list_node_t;
typedef struct {
ngx_rbtree_t rbtree;
ngx_rbtree_node_t sentinel;
ngx_queue_t lru_queue;
} ngx_http_lua_shdict_shctx_t;
typedef struct {
ngx_http_lua_shdict_shctx_t *sh;
ngx_slab_pool_t *shpool;
ngx_str_t name;
ngx_http_lua_main_conf_t *main_conf;
ngx_log_t *log;
} ngx_http_lua_shdict_ctx_t;
typedef struct {
ngx_log_t *log;
ngx_http_lua_main_conf_t *lmcf;
ngx_cycle_t *cycle;
ngx_shm_zone_t zone;
} ngx_http_lua_shm_zone_ctx_t;
#if (NGX_DARWIN)
typedef struct {
void *zone;
const unsigned char *key;
size_t key_len;
int *value_type;
unsigned char **str_value_buf;
size_t *str_value_len;
double *num_value;
int *user_flags;
int get_stale;
int *is_stale;
char **errmsg;
} ngx_http_lua_shdict_get_params_t;
typedef struct {
void *zone;
int op;
const unsigned char *key;
size_t key_len;
int value_type;
const unsigned char *str_value_buf;
size_t str_value_len;
double num_value;
long exptime;
int user_flags;
char **errmsg;
int *forcible;
} ngx_http_lua_shdict_store_params_t;
typedef struct {
void *zone;
const unsigned char *key;
size_t key_len;
double *num_value;
char **errmsg;
int has_init;
double init;
long init_ttl;
int *forcible;
} ngx_http_lua_shdict_incr_params_t;
#endif
ngx_int_t ngx_http_lua_shdict_init_zone(ngx_shm_zone_t *shm_zone, void *data);
void ngx_http_lua_shdict_rbtree_insert_value(ngx_rbtree_node_t *temp,
ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
void ngx_http_lua_inject_shdict_api(ngx_http_lua_main_conf_t *lmcf,
lua_State *L);
#endif /* _NGX_HTTP_LUA_SHDICT_H_INCLUDED_ */
/* vi:set ft=c ts=4 sw=4 et fdm=marker: */