libwebsockets
Lightweight C library for HTML5 websockets
Loading...
Searching...
No Matches
lws-cache-ttl.h
Go to the documentation of this file.
1/*
2 * libwebsockets - small server side websockets and web server implementation
3 *
4 * Copyright (C) 2010 - 2021 Andy Green <andy@warmcat.com>
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to
8 * deal in the Software without restriction, including without limitation the
9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 * sell copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22 * IN THE SOFTWARE.
23 */
24
59
60
61struct lws_cache_ttl_lru;
62
75lws_cache_lock(struct lws_cache_ttl_lru *cache);
76
83lws_cache_unlock(struct lws_cache_ttl_lru *cache);
84
106LWS_VISIBLE LWS_EXTERN int /* only valid until return to event loop */
107lws_cache_write_through(struct lws_cache_ttl_lru *cache,
108 const char *specific_key, const uint8_t *source,
109 size_t size, lws_usec_t expiry, void **ppay);
110
111typedef struct lws_cache_match {
114 /* earliest expiry amongst results */
119 size_t tag_size;
120
121 /* tag name + NUL is overcommitted */
123
169lws_cache_lookup(struct lws_cache_ttl_lru *cache, const char *wildcard_key,
170 const void **pdata, size_t *psize);
171
190lws_cache_item_get(struct lws_cache_ttl_lru *cache, const char *specific_key,
191 const void **pdata, size_t *psize);
192
208lws_cache_item_remove(struct lws_cache_ttl_lru *cache, const char *specific_key);
209
217LWS_VISIBLE LWS_EXTERN uint64_t
218lws_cache_footprint(struct lws_cache_ttl_lru *cache);
219
228lws_cache_debug_dump(struct lws_cache_ttl_lru *cache);
229
230typedef struct lws_cache_results {
231 const uint8_t *ptr; /* set before using walk api */
232 size_t size; /* set before using walk api */
233
235 size_t tag_len;
236 const uint8_t *tag;
238
257
258typedef void (*lws_cache_item_destroy_cb)(void *item, size_t size);
260 struct lws_context *cx;
262 const char *name;
268 struct lws_cache_ttl_lru *parent;
270 const struct lws_cache_ops *ops;
273
274 union {
275 struct {
276 const char *filepath;
278 } nscookiejar;
279 struct {
280 const char *dir;
282 } blob;
283 } u;
284
285
289 size_t max_items;
299 int tsi;
301};
302
304 struct lws_cache_ttl_lru *
305 (*create)(const struct lws_cache_creation_info *info);
307
308 void
309 (*destroy)(struct lws_cache_ttl_lru **_cache);
312
313 int
314 (*expunge)(struct lws_cache_ttl_lru *cache);
317
318 int
319 (*write)(struct lws_cache_ttl_lru *cache, const char *specific_key,
320 const uint8_t *source, size_t size, lws_usec_t expiry,
321 void **ppvoid);
323 int
324 (*tag_match)(struct lws_cache_ttl_lru *cache, const char *wc,
325 const char *tag, char lookup_rules);
330 int
331 (*lookup)(struct lws_cache_ttl_lru *cache, const char *wildcard_key,
332 lws_dll2_owner_t *results_owner);
335 int
336 (*invalidate)(struct lws_cache_ttl_lru *cache, const char *specific_key);
339
340 int
341 (*get)(struct lws_cache_ttl_lru *cache, const char *specific_key,
342 const void **pdata, size_t *psize);
345
346 void
347 (*debug_dump)(struct lws_cache_ttl_lru *cache);
349};
350
368LWS_VISIBLE LWS_EXTERN struct lws_cache_ttl_lru *
370
380lws_cache_destroy(struct lws_cache_ttl_lru **cache);
381
393lws_cache_expunge(struct lws_cache_ttl_lru *cache);
394
398
420
422
struct lws_dll2 lws_dll2_t
struct lws_dll2_owner lws_dll2_owner_t
lws_usec_t expiry
const uint8_t * ptr
struct lws_cache_creation_info::@024221170201115224051375337135263102206361077057::@367205363307025342014006310231154210351265165267 nscookiejar
const uint8_t * tag
LWS_VISIBLE LWS_EXTERN void lws_cache_debug_dump(struct lws_cache_ttl_lru *cache)
LWS_VISIBLE LWS_EXTERN int lws_cache_item_get(struct lws_cache_ttl_lru *cache, const char *specific_key, const void **pdata, size_t *psize)
LWS_VISIBLE LWS_EXTERN struct lws_cache_ttl_lru * lws_cache_create(const struct lws_cache_creation_info *info)
struct lws_cache_match lws_cache_match_t
LWS_VISIBLE LWS_EXTERN int lws_cache_lookup(struct lws_cache_ttl_lru *cache, const char *wildcard_key, const void **pdata, size_t *psize)
LWS_VISIBLE LWS_EXTERN_FOR_DATA const struct lws_cache_ops lws_cache_ops_heap
LWS_VISIBLE LWS_EXTERN int lws_cache_expunge(struct lws_cache_ttl_lru *cache)
LWS_VISIBLE LWS_EXTERN uint64_t lws_cache_footprint(struct lws_cache_ttl_lru *cache)
LWS_VISIBLE LWS_EXTERN int lws_cache_write_through(struct lws_cache_ttl_lru *cache, const char *specific_key, const uint8_t *source, size_t size, lws_usec_t expiry, void **ppay)
void(* lws_cache_item_destroy_cb)(void *item, size_t size)
LWS_VISIBLE LWS_EXTERN int lws_cache_results_walk(lws_cache_results_t *walk_ctx)
LWS_VISIBLE LWS_EXTERN_FOR_DATA const struct lws_cache_ops lws_cache_ops_blob
LWS_VISIBLE LWS_EXTERN_FOR_DATA const struct lws_cache_ops lws_cache_ops_nscookiejar
LWS_VISIBLE LWS_EXTERN void lws_cache_destroy(struct lws_cache_ttl_lru **cache)
LWS_VISIBLE LWS_EXTERN void lws_cache_unlock(struct lws_cache_ttl_lru *cache)
LWS_VISIBLE LWS_EXTERN int lws_cache_item_remove(struct lws_cache_ttl_lru *cache, const char *specific_key)
LWS_VISIBLE LWS_EXTERN void lws_cache_lock(struct lws_cache_ttl_lru *cache)
struct lws_cache_results lws_cache_results_t
#define LWS_EXTERN_FOR_DATA
#define LWS_EXTERN
int64_t lws_usec_t
unsigned char uint8_t
#define LWS_VISIBLE
struct lws_context * cx
union lws_cache_creation_info::@024221170201115224051375337135263102206361077057 u
struct lws_cache_ttl_lru * parent
const struct lws_cache_ops * ops
lws_cache_item_destroy_cb cb
int(* get)(struct lws_cache_ttl_lru *cache, const char *specific_key, const void **pdata, size_t *psize)
void(* destroy)(struct lws_cache_ttl_lru **_cache)
int(* lookup)(struct lws_cache_ttl_lru *cache, const char *wildcard_key, lws_dll2_owner_t *results_owner)
void(* debug_dump)(struct lws_cache_ttl_lru *cache)
int(* write)(struct lws_cache_ttl_lru *cache, const char *specific_key, const uint8_t *source, size_t size, lws_usec_t expiry, void **ppvoid)
int(* invalidate)(struct lws_cache_ttl_lru *cache, const char *specific_key)
int(* tag_match)(struct lws_cache_ttl_lru *cache, const char *wc, const char *tag, char lookup_rules)
int(* expunge)(struct lws_cache_ttl_lru *cache)