CLEANUP: cache/cli: make use of a locally defined context for "show cache"
The command uses a pointer to a cache instance and the next key to dump, they were in cli.p0/i0 respectively, let's move them to a struct show_cache_ctx.
This commit is contained in:
parent
12d5228a44
commit
c6dfef7a0b
27
src/cache.c
27
src/cache.c
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include <haproxy/action-t.h>
|
#include <haproxy/action-t.h>
|
||||||
#include <haproxy/api.h>
|
#include <haproxy/api.h>
|
||||||
|
#include <haproxy/applet.h>
|
||||||
#include <haproxy/cfgparse.h>
|
#include <haproxy/cfgparse.h>
|
||||||
#include <haproxy/channel.h>
|
#include <haproxy/channel.h>
|
||||||
#include <haproxy/cli.h>
|
#include <haproxy/cli.h>
|
||||||
@ -65,6 +66,12 @@ struct cache_flt_conf {
|
|||||||
unsigned int flags; /* CACHE_FLT_F_* */
|
unsigned int flags; /* CACHE_FLT_F_* */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* CLI context used during "show cache" */
|
||||||
|
struct show_cache_ctx {
|
||||||
|
struct cache *cache;
|
||||||
|
uint next_key;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Vary-related structures and functions
|
* Vary-related structures and functions
|
||||||
@ -2556,30 +2563,32 @@ parse_cache_flt(char **args, int *cur_arg, struct proxy *px,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* It reserves a struct show_cache_ctx for the local variables */
|
||||||
static int cli_parse_show_cache(char **args, char *payload, struct appctx *appctx, void *private)
|
static int cli_parse_show_cache(char **args, char *payload, struct appctx *appctx, void *private)
|
||||||
{
|
{
|
||||||
|
struct show_cache_ctx *ctx = applet_reserve_svcctx(appctx, sizeof(*ctx));
|
||||||
|
|
||||||
if (!cli_has_level(appctx, ACCESS_LVL_ADMIN))
|
if (!cli_has_level(appctx, ACCESS_LVL_ADMIN))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
ctx->cache = LIST_ELEM((caches).n, typeof(struct cache *), list);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* It uses a struct show_cache_ctx for the local variables */
|
||||||
static int cli_io_handler_show_cache(struct appctx *appctx)
|
static int cli_io_handler_show_cache(struct appctx *appctx)
|
||||||
{
|
{
|
||||||
struct cache* cache = appctx->ctx.cli.p0;
|
struct show_cache_ctx *ctx = appctx->svcctx;
|
||||||
|
struct cache* cache = ctx->cache;
|
||||||
struct conn_stream *cs = appctx->owner;
|
struct conn_stream *cs = appctx->owner;
|
||||||
|
|
||||||
if (cache == NULL) {
|
|
||||||
cache = LIST_ELEM((caches).n, typeof(struct cache *), list);
|
|
||||||
}
|
|
||||||
|
|
||||||
list_for_each_entry_from(cache, &caches, list) {
|
list_for_each_entry_from(cache, &caches, list) {
|
||||||
struct eb32_node *node = NULL;
|
struct eb32_node *node = NULL;
|
||||||
unsigned int next_key;
|
unsigned int next_key;
|
||||||
struct cache_entry *entry;
|
struct cache_entry *entry;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
next_key = appctx->ctx.cli.i0;
|
next_key = ctx->next_key;
|
||||||
if (!next_key) {
|
if (!next_key) {
|
||||||
chunk_printf(&trash, "%p: %s (shctx:%p, available blocks:%d)\n", cache, cache->id, shctx_ptr(cache), shctx_ptr(cache)->nbav);
|
chunk_printf(&trash, "%p: %s (shctx:%p, available blocks:%d)\n", cache, cache->id, shctx_ptr(cache), shctx_ptr(cache)->nbav);
|
||||||
if (ci_putchk(cs_ic(cs), &trash) == -1) {
|
if (ci_putchk(cs_ic(cs), &trash) == -1) {
|
||||||
@ -2588,7 +2597,7 @@ static int cli_io_handler_show_cache(struct appctx *appctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
appctx->ctx.cli.p0 = cache;
|
ctx->cache = cache;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
||||||
@ -2596,7 +2605,7 @@ static int cli_io_handler_show_cache(struct appctx *appctx)
|
|||||||
node = eb32_lookup_ge(&cache->entries, next_key);
|
node = eb32_lookup_ge(&cache->entries, next_key);
|
||||||
if (!node) {
|
if (!node) {
|
||||||
shctx_unlock(shctx_ptr(cache));
|
shctx_unlock(shctx_ptr(cache));
|
||||||
appctx->ctx.cli.i0 = 0;
|
ctx->next_key = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2616,7 +2625,7 @@ static int cli_io_handler_show_cache(struct appctx *appctx)
|
|||||||
entry->eb.key = 0;
|
entry->eb.key = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
appctx->ctx.cli.i0 = next_key;
|
ctx->next_key = next_key;
|
||||||
|
|
||||||
shctx_unlock(shctx_ptr(cache));
|
shctx_unlock(shctx_ptr(cache));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user